【发布时间】:2014-02-06 16:02:36
【问题描述】:
我正在“注销”例程中调试 PHP 中的无限循环问题。
if($_SESSION)
{
session_unset();
session_destroy();
}
sleep(1);
header('7location: http://accounts.DOMAIN.com/');
exit;
在我的 main / initial.inc.php 脚本中:-
$sess=0;
$sess=$_SESSION['loggedin'];
foreach($_SESSION as $asw => $asd)
{
$logrep.="SESSW '$asw' '$asd'\n";
}
if($sess>0)
{
if($sess<$ty)
{
$logrep.="is timed out - logging out\n";
header('Location: http://accounts.DOMAIN.com/logout/');
exit;
我已经删除了更多代码 - 但在我的“注销”脚本中,我有 DESTROY / UNSET 等 -
但是当它重定向到我的内向脚本时,我的会话仍然存在吗? - 然后它确定我超时,并重定向到我的注销例程。
QUERY:有没有万无一失的方法来删除/消除所有会话?
查询:-
$previous_name = session_name("NAME");
session_save_path("$directory");
session_start();
是否有我可以使用的 php.ini 行来替换 session_name 以便所有/任何 PHP 脚本都使用相同的名称? (以防有一些脚本不使用命名会话。)
编辑:-
如果我使用
session_unset();
session_destroy();
它会破坏 所有 个会话吗?还是只是当前命名的那个? (我怀疑我的一些脚本没有使用命名会话)
Ps - 脚本位于不同的目录/子域中。
编辑 2:-
我现在将我的脚本更改为:-
$sess=0;
$logrep.="SESS NOW '$sess'\n";
$logrep.=var_dump( $sess=$_SESSION['loggedin']);
$logrep.="SESSNOW2 - '$sess'\n\n\n";
$text.="Logged in time $sess\n";
$logrep.="\nSESS = $sess\n";
$temp2=time();
$temp1=($sess-$temp2);
$logrep.="IFF SESS $sess > TIME $time - TEMP $temp1\n";
if($sess>0)
{
- redirect to log out routine ....
(删除了一些代码)
结果:-
OLD SESS - '1391680203'
SESS NOW '0'
SESSNOW2 - '1391680203'
显然,我的会话没有被删除/移除。
【问题讨论】:
-
您是否要销毁所有用户的会话?
-
只是指定用户 - 不是所有用户(退出的用户)。