如果ie设置为禁止所有的cookie。
既,ie菜单,-->internet选项-》隐私中禁掉cookie,则得到的是file2.php显示的是fail,也就是说url这个session变量根本就没有注册成功。如果打开cookie则显示”session is ok“。
既,ie菜单,-->internet选项-》隐私中禁掉cookie,则得到的是file2.php显示的是fail,也就是说url这个session变量根本就没有注册成功。如果打开cookie则显示”session is ok“。
听说是在Apache/Linux中可以.
session内容是服务器端存储,但session号要传给客户端,以便下次请求把session号一并返回.返回的方法可以通过cookie, 也可以通过get.
默认是通过cookie传送, 通过设置php.ini可以改为get传送.
详悉内容参照php手册中session部分
session.use_cookies = 1
改成
session.use_cookies = 0
再试试
结果是一样的session is fail!;一直以为session可以不受客户端的影响。重新想了一下NightStone(天行健)的说法。我看了一下server上sess_*这个session的SID中存储的内容,就是这个session变量url的值”!file2.php“,现在我在2台freebsd,4.6.2 和4.7系统下和linux as 2.1下的测试,效果都是一样的,我原先看的帖子意思是指如果禁止session use cookie,也就是 telescope(望远镜)的设置方法或客户端都禁止cookie,则上述生成的goto test2.php的链接后面会自动跟一个SID的变量名/值对,但现在的效果不是,同时server端的处理程序会发现所有的session变量都失效。
如果我把在server上存储的/tmp/sess_*这个文件用*部分也就是SID放到url?PHPSESSID=*处,则session变量会恢复;
后来我看了一下php.ini这个文件,看到一个session.use_trans_sid = 0我把这个置为1.这时客户端的所有url后缀会自动增加一个PHPSESSID=*变量。这下明白过来了,NightStone(天行健)的说法是正确的,但很含糊,和php的manual一样。
同时我发现session也不安全,我在一些多人的虚拟主机下通过目录函数取得一些别人站点的PHPSESSID名,把它附在url后面,则有些可以直接通过授权。包括proxy中的日志也可以取得这个PHPSESSID。