2017-03-09 105 views
0

PAGE 1

<?php 
session_start(); 
$_SESSION['username']='alex'; 
?> 

PAGE 2

<?php 
session_start(); 
if (isset($_SESSION ['username'])) { 
    echo 'Welcome, ' .$_SESSION['username']; 
} else { 
    echo 'please log in'; 
} 
?> 

當我加載頁面 「歡迎,亞歷克斯」 總是呈現,不管不存在的會話。使用後

+1

以及好像你設定的第一個文件中的會話(或者不管它是什麼),那麼你有什麼期待,你如何測試會議? – xander

+0

刪除代碼的第一個PHP部分。那就是: <?php session_start(); $ _SESSION ['username'] ='alex'; ?> –

回答

0

請取消設置變量

見,

<?php 
session_start(); 
$_SESSION['username']='alex'; 
?> 

<?php 
session_start(); 
if (isset($_SESSION ['username'])) { 
    echo 'Welcome, ' .$_SESSION['username']; 
unset($_SESSION['username']); 
} else { 
    echo 'please log in'; 
} 
?> 
+0

仍然加載,'歡迎alex' – c9mber

+0

此代碼是在不同的文件或在同一個文件? –

0

你是你自己設置$ _SESSION,它會永遠存在,因爲你永遠不會UNSETTING它:

$_SESSION['username']='alex'; 

對於正常情況下,在向服務器發出POST請求時,總是會設置$_SESSION,在完成一些驗證之後,如:

<?php 
session_start(); 
if (!isset($_SESSION ['username'])) { 
    $_SESSION ['username'] = $_POST['username']; 
} 
?> 
0

一旦設置會話,它與用戶停留,直到session.gc_maxlifetime,之後給予分鐘的時間內,可以以1%爲每刷新一次機會清理(默認值:session.gc_divisor = 100session.gc_probability = 1)。

您需要可以自行終止會話或使其X時間後到期(時間戳比較或類似

您可以使用這樣的事情:

在登錄:

<?php 
session_start(); 
$_SESSION['username']='alex'; 
$_SESSION['timestamp']=date("Y-m-d H:i:s"); 
?> 

在每個後續頁面上

<?php 
session_start(); 
if (isset($_SESSION ['username']) && date("Y-m-d H:i:s")<date('Y-m-d H:i:s', strtotime($_SESSION['timestamp'].' + 20 minute'))) { 
    echo 'Welcome, ' .$_SESSION['username']; 
} else { 
    session_unset; 
    echo 'please log in'; 
} 
1

使用session_destroy您wan T中的會話被關閉

<?php 
session_start(); 
$_SESSION['username']='alex'; 
?> 

SAYFA 2

<?php 
session_start(); 
if (isset($_SESSION ['username'])) { 
    echo 'Welcome, ' .$_SESSION['username']; 
session_destroy(); 
} else { 
    echo 'please log in'; 
} 
?>