php 删除客户端cookie,PHP 客户端禁用cookie后session解决方案

cookie本身就是写在客户端的了,但是如果客户浏览器把cookie给禁用了,那么cookie就无法正常使用了,碰到此问题我们可以使用session来代替了哦,希望对各位有帮助。

PHP中的session在默认情况下是使用客户端的Cookie来保存session id的,所以当客户端的cookie出现问题的时候就会影响session了。必须注意的是:session不一定必须依赖cookie,这也是 session相比cookie的高明之处。当客户端的Cookie被禁用或出现问题时,PHP会自动把session id附着在URL中,这样再通过session id就能跨页使用session变量了。但这种附着也是有一定条件的,即“php.ini中的session.use_trans_sid = 1或者编译时打开打开了--enable-trans-sid选项”。

所以,我们可以抛开cookie使用session,即假定用户关闭cookie的情况下使用session,其实现途径有以下几种:

第一种方式:在每个超链接上添加一个PHPSESSID=$sid

 代码如下复制代码
//防止返回初始页产生新的session

if(isset($_GET["PHPSESSID"])){

session_id($_GET["PHPSESSID"]);

}

//启动一个session

session_start();

//获取当前session的session_id()

$sid=session_id();

//在每个链接上添加参数PHPSESSID=$sid

其他页面的获取方式为:

if(isset($_GET["PHPSESSID"])){

//设置当前的session为初始的session,session_id()一致即可

session_id($_GET["PHPSESSID"])

}

session_start();

第二种方式:使用 SID 常量替换链接上的 PHPSESSID=$sid (SID的值类似:PHPSESSID=sddg34r593dfdlksrewr)

 代码如下复制代码

if(isset($_GET["PHPSESSID"])){

session_id($_GET["PHPSESSID"]);

}

//启动一个session

session_start();

其他页面的获取方式为:

if(isset($_GET["PHPSESSID"])){

//设置当前的session为初始的session,session_id()一致即可

session_id($_GET["PHPSESSID"])

}

session_start();

第三种方式:使用session.use_trans_sid=1,php.ini中配置

1、设置php.ini中的session.use_trans_sid = 1或者编译时打开打开了--enable-trans-sid选项,让PHP自动跨页传递session id。

2、手动通过URL传值、隐藏表单传递session id。

3、用文件、数据库等形式保存session_id,在跨页过程中手动调用。

 代码如下复制代码

index.php

session_start();

$_SESSION['name']="Aseoe";

$sn = session_id();

$url=".""index2.php?s=".$sn."">下一页";

echo $url;

?>

index2.php

$_GET[’s’]);

session_start();

echo "传递的session变量name的值为:".$_SESSION['name'];

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值