使用多个会话

时间:2014-12-02 11:53:25

标签: php session

我有两个脚本,它们将由两个单独的URL请求执行,并且将具有独立的会话。 Script1将设置一个会话,script2需要显示script1的会话。

最初,我创建了getOtherSessionR1(),并获得了所需的功能,但是,脚本似乎不按顺序运行。我说这是因为我添加了多个syslog(),并且它们没有按照我预期的顺序写入日志。我相信这是由session_start()创建的各种标头引起的。我的信念是否正确?

然后我创建了getOtherSessionR2(),它似乎完美无缺。使用此方法有什么问题,和/或是否有更好的方法来使用多个会话?

script1.php

<?php
session_name('SESSION1');
session_start();
$_SESSION['key']='hello';
//bla bla bla
?>

script2.php

<?php
session_name('SESSION2');
session_start();
$_SESSION['key']='goodby';
//bla bla bla
$session1=library::getOtherSession('SESSION1');
echo($session1['key']);   //hello
//bla bla bla
?>

库类

中的方法
public static function getOtherSessionR1($name)
{
    if(isset($_COOKIE[$name]) && is_string($_COOKIE[$name])) {
        $session_id_current = session_id($_COOKIE[$name]);
        session_write_close();
        session_start();
        $session_other=$_SESSION;
        session_id($session_id_current);
        session_write_close();
        session_start();
    }
    else {$session_other=false;}
    return $session_other;
}


public static function getOtherSessionR2($name)
{
    if(isset($_COOKIE[$name]) && is_string($_COOKIE[$name]) && $session_other_file=file_get_contents(session_save_path().'/sess_'.$_COOKIE[$name])) {
        $session_current=$_SESSION;
        session_decode($session_other_file);
        $session_other=$_SESSION;
        $_SESSION=$session_current;
    }
    else {$session_other=false;}
    return $session_other;
}

0 个答案:

没有答案