php 禁用cookie,还能使用session,url重写

建立两个文件

sesion_a.php

header('Content-type:text/html;charset=utf-8');
session_start();
$_SESSION['url'] = 'http://localhost/session_a.php';
echo '这个页面取到的session值:'.$_SESSION['url'];
echo "另一个页面";


session_b.php

header('Content-type:text/html;charset=utf-8');
session_start();
echo "看这里是否获取到session的值:".$_SESSION['url'];


禁用cookie时

Notice: Undefined index: url in D:\phpStudy\WWW\session_b.php on line 11

通常情况下 Cookie 里记录了 Session 的 id ,所有 Cookie 被禁用了也就意味着 Session 失效了。不过 Session id 还有另外一种传递方式,就是在 URL 查询中携带 Session id (既把所有的URL里都带上Session id的参数,如: http://xxx/index?sid=...)。不够这种方法比较麻烦(所有的链接都要带上),而且比较容易丢失 Session id(地址可以认为修改去掉ID),所有只是作为备选方案,在 Cookie 不能使用的环境下可以作为替代。


header('Content-type:text/html;charset=utf-8');
session_start();
$_SESSION['url'] = 'http://localhost/session_a.php';
$sn = session_id();
echo '这个页面取到的session值:'.$_SESSION['url'];
echo "另一个页面";


header('Content-type:text/html;charset=utf-8');
session_id($_GET['s']);
session_start();
echo "看这里是否获取到session的值:".$_SESSION['url'];


http请求是无状态的。。假如你是浏览器,我是服务器,那么类似你知道我的电话号码,可以给我打电话,但是我不知道你的电话号码,我想和你说话只能等你跟我打。。
那么问题来了,如果你想让我相信你就是昨天给我打电话的那个人必须借助一个新的东西,比如你给我打电话的时候我给你一串数字,你下次打给我告诉我这串数字我就知道你是谁了,这串数字在我这里存的就叫session(可以简单这么理解),你自己也存了一份,那份叫cookie。你以后给我打电话顺便把这个cookie给我就可以了。这个就是session和cookie的原理。
所以了,假如你要禁用cookie,通过cookie把那串数字给我就不行了。那你也可以把这串数字放在url后面给我,或者放到form表单里给我,那也是可以的。

你可能感兴趣的:(php)