LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1573|回复: 4

php中cookie和session的区别

[复制链接]
发表于 2005-1-28 06:27:40 | 显示全部楼层 |阅读模式
http协议是一种无状态的连接,要想跟踪用户的行为就必须有一个能工作于不同于页面的变量,在PHP中可以用cookie和session两种办法实现。
cookie大家比较熟悉了,就是在把变量存为客户端上的一个文件而已,但是如果客户禁止cookie就没办法了。这就需要session了,在PHP4中,session可以有两种办法实现,一是用cookie,即把sessionID保存在cookie文件中;二是把sessionID附带在URL上进行传递。
虽有这两种办法实现,但至于使用哪种方法是不用程序员操心的,PHP会自动检查客户cookie的设置的(指linux/unix平台,Win32未知),并且默认的是优先使用cookie(你可以修改php.ini文件中的[session]一节的session.use_cookies的值来改变)。当然你也可以强制使用URL来传递SessionID,如下:
<a href="submit.php<?=sessionID;?>">提交表单</a>
仅在链接中加一句<?=sessionID;?>就行了,简单吧?在php.ini中还有许多关于Session的设置,如session.cookie_lifetime是session的有效时间等,都在[session]一节中,若看看的话会对PHP中的session有更多的理解的。
发表于 2005-1-29 03:43:39 | 显示全部楼层
session可以不依赖于cookie存在,简单的说,cookie的数据保存在客户端,session则是在服务器上
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-29 04:34:22 | 显示全部楼层
谢谢 本来想问一问到底有什么区别 不好直接问 就先在网上搜了搜
回复 支持 反对

使用道具 举报

发表于 2005-1-30 22:12:39 | 显示全部楼层
php中session和cookie是有直接联系的。。。
session信息是存放在server端,但session id是存放在client cookie的,当客户端禁止cookie时,cookie信息无法保存,可以通过url复写(rewrite)方式传递session id来判断用户是否还在本会话中。。。这个过程php可以自动完成
当然php的session存放方法是多样化的,默认session信息存放在server的文件里,但也可以通过数据库等其它方式存放,这需要程序来扩展,好处也是明显的,比如可以轻松实现sso(Single Sign On)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-2 08:11:33 | 显示全部楼层
我看到一个php论坛在注册时说:
在浏览论坛的时候使用cookies?
选择yes将把你的ID和SESSION保留在浏览器中. 选择no将通过URL来发送. (在使用代理服务器的时候,选择no可能会出错)
请问这不是说session是放在了客户端吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表