前言:之前关于客户端cookie和服务端session的关系有点模糊,认为cookie禁用后session指定不能用了,通过验证后才发现自己的错误。
1:在php环境中的php.ini中有关session的设置值:
//处理session存取的模式
session.save_handler = files
//session档案存放路径
session.save_path = /tmp
//session使用cookie的功能,启动: 1
session.use_cookies = 1
//session名字
session.name = PHPSESSID
//自动启动;0:关;1:开启
session.auto_start = 0
//session使用cookie的生存期,以秒为单位
session.cookie_lifetime = 0
这些默认值,不需要修改,就可以使用session了。
2:但是当我们得浏览器禁用cookie时,则会出现你认为的样子,session不能用。
此时我们应该在php.ini中再去研究一下发现
session.use_trans_sid = 1//这个字段允许SessionID通过URL明文传输
session.use_only_cookies = 1 ; // 开启仅使用cookies存放会话id
此时再去测试发现session又获取到了。
但当 session.use_only_cookies =0;时,无法获取到session的,在php.ini中这个值默认是0
3:代码:①当浏览器没有禁用cookie时:
a.php:
<?php
session_start();
$_SESSION['url'] = '
$url = "<a href='./b.php'>下一个页面</a>";
echo $url;
?>
b.php
<?php
session_start();
echo "session中url是:".$_SESSION['url'];
?>
②当浏览器禁用cookie后,并且设置php.ini中
session.use_trans_sid = 1//这个字段允许SessionID通过URL明文传输
session.use_only_cookies = 1; // 开启仅使用cookies存放会话id
代码:
a.php
<?php
session_start();
$_SESSION['url'] = '
$name = session_name();
$id = session_id();
$url = "<a href='./b.php?".$name."=".$id."'>下一个页面</a>";
echo $url;
?>
b.php
<?php
session_id($_GET['PHPSESSID']);
session_start();
echo "session中url是:".$_SESSION['url'];
?>
以上是我对cookie和session的理解,如有不对,可以留言,一起学习,进步。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。