2015-04-01 95 views
-1

我在一個非常簡單的網站上實現了一個登錄/註銷系統。我已經成功地實現通過會議記錄中,這是我在這裏在網站上註銷?

How to connect user with a login cookie in PHP?

第一個答案說明會議非常好讀了,我想我已經開竅了。我唯一的問題是註銷。我在哪裏把語句session_destroy();?很明顯,我想將它放在註銷鏈接中,同時銷燬會話並將其發送回主頁。讓我分享一下我的代碼,用於登錄和註銷的鏈接(所有頁面都一樣)。

<a href= <?php 
if(isset($_SESSION['user_id'])) 
    echo"index.php"; 
else 
    echo"login.php"; ?>> 
<?php 
if(isset($_SESSION['user_id'])) 
    echo"Logout"; 
else 
    echo"Login"; 
?> 
</a> 

因此,如果您的會話處於活動狀態,您會看到一個將您重定向到主頁的「註銷」鏈接。否則,你只會看到登錄鏈接並被定向到登錄頁面。那麼當我看到註銷鏈接時,如何做到這一點也會破壞會話?謝謝。

+0

你想要的*的index.php * * * logout.php代替? – bloodyKnuckles 2015-04-01 05:21:41

+0

不要忘記把你的** href **屬性引號。它需要一個字符串,以便將其包含在引號中。 – Gokigooooks 2015-04-01 05:23:54

回答

0

href屬性應該用引號括起來。

href="<?php echo $this_var; ?>" 

然後針對您的問題,我建議您可以在註銷時在重定向時注入一個變量,就像這樣。

<? 
    echo 'login.php?value=logout'; 
?> 

,並在您的login.php

<?php 
    if(isset($_GET['logout'])) 
    { 
     unset($_SESSION['user_id']); 
     //use this if you only want the user_id session to be unset. 
    } 
?> 
0

您將註銷文本轉換爲調用php腳本的超鏈接,該腳本將會話中的user_id屬性取消或使用session_destroy()銷燬該腳本。

<a href= <?php 
if(isset($_SESSION['user_id'])) 
    echo"index.php?logout=true"; 
else 
    echo"login.php"; ?>> 
<?php 
if(isset($_SESSION['user_id'])) 
    echo"Logout"; 
else 
    echo"Login"; 
?> 
</a> 

而且在index.php文件,在腳本的頂部添加如下因素:

if (isset$_GET['logout'])) 
    session_destroy(); 
+0

我有那種感覺,但我不確定語法是什麼。 – briansrls 2015-04-01 05:20:07

+0

張貼您的index.php – DSF 2015-04-01 05:21:03

+0

我會用它更新問題。 – briansrls 2015-04-01 05:22:39

0

創建一個新的文件logout.php,並把這些內容給它。

<?php 
if(isset($_SESSION['user_id'])) { 
    unset($_SESSION['user_id']); 
    // and delete all the sessions you have created. 
    // or use session_destroy(); 
} 
?> 

我寧願使用自定義對象來存儲我所有的會話信息,而不是直接將其存儲在隨機$_SESSION關聯數組中值

總之在這個問題提出您的網頁代碼應作如下修改

<?php if(isset($_SESSION['user_id'])):?> 
    <a href="logout.php">Logout</a>; 
<?php endif; ?>