簡體   English   中英

HTACCESS中的PHP會話-超時

[英]PHP sessions in HTACCESS - timeout

我正在“注銷”例程中調試PHP中的無限循環問題。

if($_SESSION)
{
    session_unset();
    session_destroy();
}
sleep(1);
header('7location: http://accounts.DOMAIN.com/');
exit;

在我的主要/ 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;

我已經刪除了更多代碼-但在我的“注銷”腳本中,我已經破壞了/設置了-

但是當它重定向到我的內部腳本時,我的會話仍然存在嗎? -&然后確定我超時,&重定向到我的注銷例程。

查詢:是否有一種簡單的方法來刪除/消除所有會話?

查詢:

$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'

顯然,我的會話沒有被刪除/刪除。

我想您的文件“ initial.inc.php”包含在每個腳本的頂部。

在注銷的頁面上,您有:

session_unset(); session_destroy();

在此階段,您的會話已被破壞。 那你做

header('location: http : //accounts.DOMAIN.com/ ');

執行'initial.inc.php';

我假設您在initial.inc.php'session_start();的開頭,因為您有

$sess=$_SESSION['loggedin'];

而且似乎由於會話丟失而不會發出警告。 因此,您的會話將在initial.inc.php文件中重新創建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM