您的位置:首页 > 编程语言 > PHP开发

PHP中禁用cookie后的session

2011-11-07 19:27 239 查看
我们知道当客户端浏览器把COOKIE禁掉后,服务器端的SESSION是没有办法正常使用的。因为服务器端的SESSION是通过SESSIONID来区分不同用户的SESSION的,而这个SESSIONID就是通过客户端的COOKIE传递到服务器端的,更严格地说,因为在PHP使用session_start()语句后,会向客户端发送一个头部信息,其中就指定了此次SESSION会话的SESSIONID,此SESSIOID就是存放在客户端的COOKIE中的,现在COOKIE禁掉后,当然就无法保存SESSIONID了。

下面是session_start()的输出的头部信息:

Content-type: text/html

X-Powered-By: PHP/4.3.3

Set-Cookie: PSD=9b577c86baea8a15ebe15b220ee1e180; path=/

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

现在可以确定把COOKIE禁掉后,无法使用SESSION。那遇到这种情况,客户就是要禁COOKIE,而且我们又要保证这部分用户能正常使用,该怎么办呢?办法就是使用PHP的output_add_rewrite_var这个函数。

这样就不怕禁用COOKIE了,因为SESSIONID会自动跟在URL后面而且FORM中会出现SESSIONID的HIDDEN值。在服务器端照常使用SESSION就可以了。

测试代码:test.php

<?php

session_start();

$_SESSION['test'] = 1;

output_add_rewrite_var('PHPSESSID',session_id ());

echo '<a href="test1.php">link</a>';

?>

test1.php:

<?php

session_start();

print_r($_SESSION);

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: