- 论坛徽章:
- 0
|
本人在写的时候在php.ini里可以设置session在服务器上的保存位置。这个很明确。但是session是和cookie同时工作的,我找不到客户端cookie的位置,我想client上cookie应该里面写有session_id的一串数字来表明是使用了那个会话id,不知道,我的理解对不对?客户端ie保存cookie的位置在哪里?是不是,在关闭浏览器的时候cookie会自动删除或者是自动过期(服务器自动删除相应的session_id )?
再一个是:
在a.php中
<?
session_start(); //会话开始,在服务器的相应位置创建名为sess_5ecd101f02b1b6fac1e95b850ad55f01的文件
$_SESSION[name]="yocc"; //给会话变量name赋值
$_SESSION[pwd]="123456"; //给会话变量pwd赋值
echo $_SESSION[name]."<br>;";
echo $_SESSION[pwd]."<br>;";
echo "<a href=b.php>;go to b.php</a>;";
?>;
上面的执行结果是:
yocc
123456
go to b.php
服务器中sess_5ecd101f02b1b6fac1e95b850ad55f01的文件内容为name|s:4:"yocc";pwd|s:6:"123456"; 请问这个sess_5ecd101f02b1b6fac1e95b850ad55f01文件的内容的格式有什么特别的讲究么?每一个字符都代表什么意思?相关资料有么?格式应该是变量名|类型:长度:"值";
在b.php中
<?
session_start(); //恢复会话(我想应该是client上的cookie里的session_id发送给了服务器,从而恢复了sess_5ecd101f02b1b6fac1e95b850ad55f01的会话,并且可以继续使用a.php中声明的会话变量name和pwd,不知道,我的理解对不对?)
echo $_SESSION[name]."<br>;";
echo $_SESSION[pwd]."<br>;";
session_destroy(); //关闭建立的会话(是不是应该从服务器上自动删除sess_5ecd101f02b1b6fac1e95b850ad55f01这个文件,但是没有?)
?>;
执行结果:--没有任何显示--。(是不是在从a.php连接到b.php的过程中浏览器没有发送cookie到服务器来恢复会话?还是,其他别的原因?在点击a.php中的连接后成新的sess_fe0d5c43e46608e4e98d970a82a1e849文件,并且大小为0,内容为空,sess_5ecd101f02b1b6fac1e95b850ad55f01这个由a.php生成的文件还在,内容没变。如果新打开一个浏览器窗口,在地址栏里直接写入http://*.*.*.*/yocc/b.php,会在服务器上生成一个新的sess_c4011afee1b58ed613c039363f3e8d3f文件,而且内容为空,大小为0。从这点来看,可能是把b.php中的session_start();当作创建新的会话了,而没有恢复以前的会话,不知道我的理解对不对?如何解决这个b.php执行没结果的问题?)
以上红色的部分为我的问题,请高手逐一解答!谢谢!
本人系统为win2k+apache+mssql+php4.3
绿色部分为已经解决的答案! |
|