免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2432 | 回复: 4
打印 上一主题 下一主题

还是session和cookie 的问题,这回要彻底搞清它的机制! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-07-19 06:38 |只看该作者 |倒序浏览
本人在写的时候在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
     
绿色部分为已经解决的答案!
mai 该用户已被删除
2 [报告]
发表于 2003-07-21 15:09 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2003-07-22 00:44 |只看该作者

还是session和cookie 的问题,这回要彻底搞清它的机制!

[quote]原帖由 "mai"]请你认真检查代码,犯的都是一些低级的错误。我将你的代码运行了一遍,a.php和b.php都出错。修改后运行正常。[/quote 发表:
     

你好,我的代码当中b.php中有笔误“]”多了一个(现在已经改正)!!!!!!!!请注意,但是a.php中完全没有问题!!!!!

而且,这个问题我已经自己找到原因了,根本不是你说的这两个文件的问题,重申这两个*.php文件根本没有问题(除了一个小的笔误)!!!

原因出在对php.ini文件的还是不够了解,session.cookie_path = /,这句要用默认的“/”,我以前以为是cookie的保存路经,其实不是,改成默认就可以了,这句的解释我现在还不明白,像这样的一句话解释的配置选项,在php.ini中还很多,我只能大概其猜到一部分如何使用,但还是有很多不彻底清楚的!请彻底清楚的高手,详细解释每一句配置选项的意思,请不要只翻译上面的一句话,这个让我不能理解!谢谢!
我认为这对提高php的整体认识有莫大的帮助!

期待中!

还有php发给浏览器的cookie放在什么位置???在机器中找不到!!

C:\Documents and Settings\Administrator\Cookies
C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files
下都没有的
C:\Documents and Settings\All Users下无cookies文件夹
已显示了所有文件,包括被保护的系统文件。

我认为,浏览器会自己建立cookie但不是用文件的形式!这要看看原版的cookie的官方资料了,我发现有一些网站会发送cookie到客户的浏览器,但是本地机器上并没有cookie文件,这绝不是偶然问题,有它的机制的,我想是为了更安全吧!

请提供cookie的标准资料,好像他的老家网景有吧!
期待中!

论坛徽章:
0
4 [报告]
发表于 2003-07-22 12:40 |只看该作者

还是session和cookie 的问题,这回要彻底搞清它的机制!

不好意思,我有出新问题了!  

这个session_destroy();函数是不是用在整个会话结束的最后,他会删除服务器上的会话id!

但是如果客户在没有浏览完整网站,就关闭了浏览器的话(也就是没有浏览有session_destroy();函数的页面时就关掉了浏览器),在服务器上的会话id不能自动删除呀?!!

比如:客户在浏览了a.php后,没有click连接进入b.php,就关掉了浏览器的话,在服务器上的会话id还是会存在,而且我等了很长的时间它也不自动消失,虽然有可能这个在服务器上的id已经失效?但是时间长了服务器上会不会有很多的这样的垃圾id存在呢?

请高人解答其中的秘密!谢谢!

论坛徽章:
0
5 [报告]
发表于 2003-07-23 01:12 |只看该作者

还是session和cookie 的问题,这回要彻底搞清它的机制!

超过生命周期会自动删除,不用担心。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP