我有两个脚本,它们将由两个单独的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;
}