当通过url字符串接收会话ID时,PHP会话变量不向前传递

时间:2015-06-29 22:15:20

标签: php session cross-site

由于跨站点会话管理,首先我通过url发送了会话ID。请注意我创建了一个$ username变量。第一个代码只是一个更大的代码。

ini_set("session.use_cookies",0);
ini_set("session.use_trans_sid",1);
session_start();
$session_id = $username;
header("location: http://somedomain.com/receive.php?session_id=". $session_id );

现在我在这里收到它并创建一个新会话我已在同一站点转发了会话变量:

ini_set("session.use_cookies",0);
ini_set("session.use_trans_sid",1);
session_id($_GET['session_id']);
$some_var=session_id();
session_destroy();
session_start();
$_SESSION["var_name"] = $some_var;
//echo '<pre>' . print_r($_SESSION, TRUE) . '</pre>';
header("location: anotherfile.php");

当我取消注释上面的回声线和注释标题行时,我可以成功查看会话数组。但是当我把它传递给anotherfile.php时,我松开了会话。

session_start();
echo '<pre>' . print_r($_SESSION, TRUE) . '</pre>';

为什么我无法在最后一个文件中获取会话的任何帮助。

1 个答案:

答案 0 :(得分:0)

更改第二个文件

   <?php
        ini_set("session.use_cookies",0);
        ini_set("session.use_trans_sid",1);
        session_id($_GET['session_id']);
        $some_var = session_id(); // remove session_destroy code because no        session is set before.
        session_start();
        $_SESSION["var_name"] = $some_var;
        header("location: anotherfile.php");

对此会很好

   <?php

        session_id($_GET['session_id']);
        $some_var = session_id(); // remove session_destroy code because no        session is set before.
        session_start();
        $_SESSION["var_name"] = $some_var;
        header("location: anotherfile.php");