浏览器禁用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选项”。那么相应有以下3种解决方法:

1、设置php.ini中的session.use_trans_sid = 1或者编译时打开打开了--enable-trans-sid选项,让PHP自动跨页传递session id。
2、手动通过URL传值、隐藏表单传递session id。 
3、用文件、数据库等形式保存session_id,在跨页过程中手动调用。

手动通过URL传值的例子

session.php:

<?php
    
    if($_SERVER['REQUEST_METHOD']=="POST")
    {
        session_start();
            
        $_SESSION["tests"]="hello";
        header("location:http://192.168.0.1/IOS/session1.php?ssid=".session_id());
    }
    else
    {
        echo "<form method=POST action='session.php' name='postform'>";
        echo "<a href='#' οnclick=\"document.postform.submit();return false;\">禁用session</a>";
        echo "</form><p>";
    }
?>

 

session.php:

<?php
    if($_REQUEST["ssid"])
    {
        session_id($_REQUEST["ssid"]); //根据session id来获取当前的session
    }
    session_start();
    echo $_SESSION["tests"];
    session_unset("tests");
?>

 

 

 

 

转载于:https://www.cnblogs.com/Kakasi/archive/2013/05/14/3077864.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值