zoukankan      html  css  js  c++  java
  • 浏览器禁用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='#' onclick=\"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");
    ?>

     

  • 相关阅读:
    Cartographer源码阅读(1):程序入口
    ROS开发与常用命令
    实时Cartographer测试(1)
    Cartographer安装
    ROS安装(2)
    Linux学习和ROS安装(1)
    无法启动程序
    c# 获取端口的连接数,网站的连接数
    SignarL服务器端发送消息给客户端的几种情况
    c#操作IIS之IISHelper
  • 原文地址:https://www.cnblogs.com/Kakasi/p/3077864.html
Copyright © 2011-2022 走看看