2015-11-26 145 views
0

我有一個註銷按鈕,似乎不工作。點擊它後,我仍然可以看到「歡迎用戶名」,註銷按鈕仍然存在,如下圖所示。請讓我知道我的logout.php上缺少什麼。註銷不起作用

我還可以問我怎樣才能在點擊註銷後將用戶重定向到原始頁面?我嘗試使用"header('Location: ' . $_SERVER['HTTP_REFERER']);"但它不起作用?

enter image description here
的index.php

<?php 
ini_set("session.save_path", "sessionData"); 
session_start(); 
?> 

<?php if (!isset($_SESSION['uName'])) { ?> 
    <form method="post" action="logonProcess.php"> 
    <div>Username <input type="text" name="userName" placeholder="Username"></div> 
    <div>Password <input type="password" name="pwd" placeholder="Password"></div> 
    <div><input type="submit" value="Logon"></div> 
    </form> 
<?php } else { }?> 



<?php if (isset($_SESSION['uName'])) { 
    $username = $_SESSION['uName'];  
    echo "<p>Welcome $username</p>\n"; 
?> 
     <a href="logout.php">Logout</a> 

<?php } else { }?> 

Logout.php

<?php 
unset($_SESSION['user']); 
session_destroy(); // Destroying All Sessions 
header("Location: index.php"); // Redirecting To Home Page 
?> 
+0

查看關於引用鏈接的手冊http://php.net/manual/en/reserved.variables.server.php。它並不總是設置。應該檢查並且有一個默認值,如果不是,不是所有的用戶代理都會設置它,有些提供修改HTTP_REFERER作爲一個功能的能力。總之,它不能真正被信任。「 – chris85

+1

你有沒有試過[This one](http://stackoverflow.com/a/3512570/3583859)接受的答案 –

+0

爲什麼你不設置一個不同於你設置的會話變量? – Barmar

回答

1

嘗試添加這對您的註銷文件:

unset($_SESSION['uName']); 
2

開始嘗試會話時的第一:

Logout.php

<?php 
    session_start(); 
    unset($_SESSION['uName']); 
    session_destroy(); // Destroying All Sessions 
    header("Location: index.php"); // Redirecting To Home Page 
?> 

源來自:http://www.hackingwithphp.com/10/3/5/ending-a-session

+0

獲勝者贏家,如果不開始會話,您將無法訪問會話甚至取消設置。 – Darren

1

使用會話的所有腳本需要使用相同的session.save_path設置。由於您在index.php中設置了該值,因此還需要將其設置爲logout.php。否則,logout.php將無法​​訪問會話數據。