导航:首页 > 编程语言 > php设置sessionid

php设置sessionid

发布时间:2022-07-25 11:09:46

‘壹’ php 怎么设置session 的值永不过期

把sessionID存到客户端cookie里试试呢

<?php
session_start();//启动Session
$_SESSION['count'];//注册Session变量Count
isset($PHPSESSID)?session_id($PHPSESSID):$PHPSESSID=session_id();
//如果设置了$PHPSESSID,就将SessionID赋值为$PHPSESSID,否则生成SessionID
$_SESSION['count']++;//变量count加1
setcookie('PHPSESSID',$PHPSESSID,time()+3156000);//储存SessionID到Cookie中
//echo$count;//显示Session变量count的值
?>

‘贰’ php网站的session 在服务器端是如何给客户端分配sessionid的

在PHP.INI里面有一项session.save_path,就是设置session保存位置的。
session是通过cookie来实现的,当浏览器访问一个页面时,php发现在cookie里面没有sessionid这个值,就会产生一个sessionid出来,同时对应一个服务器里面的session文件。然后通过cookie传给浏览器(通过cookie),下次浏览器再访问页面的时候,就会把这个sessionid给带上(也是cookie),然后php通过这个cookie找到对应的session文件,读取session的值。
也就是说如果用户关了cookie那session就用不了了。

以上就是session的原理,不过一般来说你也不需要了解它。

‘叁’ php Session 设置问题

使用到session时,取值还是赋值都要开启session_start()的
time()>$_SESSION['name'] + 1200这是什么意思,是想要当时间超过session保存的数据的时间吗,
不用了吧 如果只是文件session写入的话可以在服务器配置的session.gc_probability = 1
session.gc_divisor = 1
session.gc_maxlifetime = 10
这几个参改写中

你的session_id 是通过cookie传递的吧 如果打开一新页面没有得到已注册的值,session赋值失败,还有一种可能就是session.cookie_lifetime = 0问题 这值为0的话浏览器被重启cookie保存的session_id丢失

‘肆’ php中“session_id()”是什么意思

session_id()

session_id() 存取目前 session 代号。

语法: string session_id(string [id]);

本函数可取得或者重新配置目前存放 Session 的代号。若无参数 id 则表示只有取得目前 Session 的代号,加上参数则表示将 Session 代号设成新指定的 id。输入及返回均为字符串。

输出 session_id()
<?php
session_start();
echo session_id();
// 输出 dqr58dnuqj2gufvg4o3tmjb9v4
?>

设置 session_id()
<?php
session_id("NowaMagic");
session_start();

echo session_id();
// 输出 NowaMagic
?>

‘伍’ php 如何设置sessionid的有效期

ini_set('session.gc_maxlifetime',20);//20s

用session.gc_maxlifetime来设置

‘陆’ 用PHP怎么在session里存多个id

这个你不用担心,每个session都有唯一的session_id,每次生成session,php都会自动生成1条唯一的session

session_id是不会打印出来的

只能另行输出 echo session_id()
或者可以:
Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。

前序:

首先要明白PHPSESSID看似多次刷新都不会改变其实是没有删除本地相关联的cookie,删除的方法

session_destroy();//删除服务器端的session文件

setcookie(session_name(),'',time()-3600,'/');//删除本地相关联的cookie

session_unset();//清空内存中的cookie或者是$_SESSION = array();

然后再刷新相应的页面你就会看到PHPSESSID会发生变化了,根据此可以得:如果session文件已经创建则不重新生成PHPSESSID,否则需要重新生成,生成规则,就看下边喽……!

--------------------------------------------------------------------------------------------------------------------------------------

现在经过测试应该是不是检测session文件是否存在,而是检测PHPSESSID的cookie是否存在并且是否未过期!特此更正!

------------------------------------------------------------------------------------------------

可能PHP开发者心中多少都思考过这么两个问题:

种植在客户端浏览器中的PHPSESSIONID会出现重复吗?
PHPSESSIONID安全性如何,有没可能被黑客轻易的仿造呢?
带上这个问题,我稍微注意了一下PHP的源码后,疑问也就有了答案。

PHP在使用默认的 session.save_handler = files 方式时,PHPSESSIONID的生产算法原理如下:

hash_func = md5 / sha1 #可由php.ini配置
PHPSESSIONID = hash_func(客户端IP + 当前时间(秒)+ 当前时间(微妙)+ PHP自带的随机数生产器)

从以上hash_func(*)中的数据采样值的内容分析,多个用户在同一台服务器时所生产的PHPSESSIONID重复的概率极低(至少为百万份之一),设想,但台动态Web Server能到2000/rps已经很强悍了。

另外,黑客如果要猜出某一用户的PHPSESSIONID,则他也必须知道“客户端IP、当前时间(秒、微妙)、随机数”等数据方可模拟。

以下是截取PHP源码中PHPSESSIONID实现片段:

gettimeofday(&tv, NULL);

if (
zend_hash_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER"), (void **) &array) == SUCCESS &&
Z_TYPE_PP(array) == IS_ARRAY && zend_hash_find(Z_ARRVAL_PP(array), "REMOTE_ADDR", sizeof("REMOTE_ADDR"), (void **) &token) == SUCCESS)
{
remote_addr = Z_STRVAL_PP(token);
}

spprintf(&buf, 0, "%.15s%ld%ld%0.8F", remote_addr ? remote_addr : "", tv.tv_sec, (long int)tv.tv_usec, php_combined_lcg(TSRMLS_C) * 10);

switch (PS(hash_func))
{
case PS_HASH_FUNC_MD5:
PHP_MD5Init(&md5_context);
PHP_MD5Update(&md5_context, (unsigned char *) buf, strlen(buf));
digest_len = 16;
break;
case PS_HASH_FUNC_SHA1:
PHP_SHA1Init(&sha1_context);
PHP_SHA1Update(&sha1_context, (unsigned char *) buf, strlen(buf));
digest_len = 20;
break;
default:
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Invalid session hash function");
efree(buf);
return NULL;
}

‘柒’ php 如何使用cookie安全的保存登录状态sessionid

同样还是将用户的认证信息保证在一个cookie中,具体如下:
1.cookie名:uid。推荐进行加密,比如MD5('站点名称'+userid)。
2.cookie值:登录名|有效时间Expires|hash值。hash值可以由"登录名+有效时间Expires+用户密码(加密后的)的前几位+salt",salt是保证在服务器端站点配置文件中的随机数。
这样子设计有以下几个优点:
1.即使数据库被盗了,盗用者还是无法登录到系统,因为组成cookie值的salt是保证在服务器站点配置文件中而非数据库。
2.如果账户被盗了,用户修改密码,可以使盗用者的cookie值无效。
3.如果服务器端的数据库被盗了,通过修改salt值可以使所有用户的cookie值无效,迫使用户重新登录系统。
4.有效时间Expires可以设置为当前时间+过去时间(比如2天),这样可以保证每次登录的cookie值都不一样,防止盗用者窥探到自己的cookie值后作为后门,长期登录。

‘捌’ php 当浏览器禁用cookie怎么设置session

我们可以抛开cookie使用session,即假定用户关闭cookie的情况下使用session,其实现途径有以下几种:

1、设置php.ini中的session.use_trans_sid = 1或者编译时打开打开了--enable-trans-sid选项,让PHP自动跨页传递session id。
2、手动通过URL传值、隐藏表单传递session id。
3、用文件、数据库等形式保存session_id,在跨页过程中手动调用。

途径1举例说明:

s1.php

<?php
session_start();
$_SESSION[’var1’]="中华人民共和国";
$url="<a href=".""s2.php">下一页</a>";
echo $url;
?>

s2.php

<?php
session_start();
echo "传递的session变量var1的值为:".$_SESSION[’var1’];
?>

‘玖’ php中的sessionId是干什么的

SESSION_ID会话ID。

session_data是编码会话数据。这个数据是在PHP内部编码$_SESSION超全局,以序列化字符串,并把它当作这个参数的结果。

请注意会话使用替代序列化方法。

返回值

会话存储的返回值(通常成功返回 0,失败返回 1)。

阅读全文

与php设置sessionid相关的资料

热点内容
python软件功能简介 浏览:784
外国程序员一般多少岁退休 浏览:917
怎么看linux和时间服务器 浏览:680
程序员搞笑花名 浏览:501
dota2怎么设置国服服务器地址 浏览:212
单片机高电平驱动 浏览:115
ios多选文件夹 浏览:909
加强行车调度命令管理 浏览:243
服务器已禁用什么意思 浏览:150
部队命令回复 浏览:755
神奇宝贝服务器地图怎么设置 浏览:382
加密算法输出固定长度 浏览:862
程序员去重庆还是武汉 浏览:121
服务器如何撤销网页登录限制 浏览:980
微信公众平台php开发视频教程 浏览:628
怎么看苹果授权绑定的app 浏览:255
压缩机单级压缩比 浏览:380
linux测试php 浏览:971
什么时候梁旁边需要加密箍筋 浏览:40
微信清粉软件源码 浏览:717