[英]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.