求教:对于SESSION的一个大疑问

Alan820221 2006-02-28 10:49:07
我看了很多关于session的文章,对session有一定的了解,现在我的问题是:

我们知道,在客户端完全禁用cookie的前提下,我们还是可以通过在url中传递SID来实现对session的使用。但是我看到有的人说只要在php.ini中设置session.use_cookies = 0,php就可以自动在url后面加上sessionid,意即不用打开cookie,也不需要我们自己在程序的url中写,session还是能用。

事实上我试过,这样好象是不行的,但是我看到很多人都有说过类似的话,对此我很不解,请各位高手指教,帮我把这个问题解释清楚,如果这样真的可以,具体到底是怎么实现的,先谢谢各位了。
...全文
264 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Alan820221 2006-03-07
  • 打赏
  • 举报
回复
ashchen(輝輝)说的我知道,怎么配置我很清楚,这个不是我想要问的,请看清楚我的问题。
ashchen 2006-03-06
  • 打赏
  • 举报
回复
session id 只通过两种途径传递 ,cookie和url,两者择1
相关配置项 php.in
session.use_cookies = 1
session.use_only_cookies = 1
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

具体怎么配查手册,谢谢
Alan820221 2006-03-06
  • 打赏
  • 举报
回复
首先感谢xuzuning(唠叨)的回复。
但是你写的这个测试程序并没有说明SID依旧可以用,因为通过print_r($_SESSION);显示出来的是你自己设置的一个叫id的session变量,而并不是sessionid。
这里的id可以显示是因为它是存在服务器端的,而并不是客户的浏览器端。事实上,SID依旧是存在cookie中,因此依旧是不能使用的,可以在xuzuning(唠叨)的程序中加一句echo $PHPSESSID;,结果是:在cookie禁用的情况下,没有任何显示。
到目前为止,据我所知,在cookie完全禁用的情况下,sessionid只能通过url来传递,或者用专门的数据库session表来实现功能,网上有为这样的实现方式而专门写的类。
mysqlaping 2006-03-03
  • 打赏
  • 举报
回复
我怎么一直都有啊??
xuzuning 2006-02-28
  • 打赏
  • 举报
回复
你描述的内容是很久以前的了,在php4.0.6时代session确实是那种方式传递的。

但是现在已经改变了,具体使用了什么机制我还不是很清楚。测试如下
<?php
setcookie('name', 'my');
print_r($_COOKIE);
?>
<script>
document.write(document.cookie);
</script>

在开启cookie的浏览器中将显示cookie的值
当关闭cookie后就不显示了,这表示cookie确实被关闭了
改写代码为
<?php
session_start();
$_SESSION['id'] = 123;
setcookie('name', 'my');
print_r($_COOKIE);
print_r($_SESSION);
?>
<script>
document.write(document.cookie);
</script>

再次执行发现:cookie确实依然没有,但session却是存在的,并且url中也并没有附加任何参数

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧