2012-08-31 2 views
7

У меня этот код и вам нужен код для добавления кнопки выхода из системы, может ли кто-нибудь выписать код для выхода из системы, который выйдет из системы, я прочитал что-то об уничтожении сессии, но не знаю, как напишите код, спасибо!Выход из системы php

<?php 
    include 'connection.php'; 
    //start of checking if user is logged in code 
    if (!valid_credentials) { 
    header('Location: login.php'); 
    exit(); 
    } 

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


if (!isset($_SESSION['user'])) { 
    header('Location: login.php'); 
    exit(); 
} 
    //end of logged in code and starting a session 

$query = "SELECT * FROM people"; 
$result = mysql_query($query); 
While($person = mysql_fetch_array($result)) { 
    echo "<h3>" . $person['Name'] . "</h3>"; 
    echo "<p>" . $person['Description'] . "</p>"; 
    echo "<a href=\"modify.php?id=" . $person['ID']. "\">Modify User</a>"; 
    echo "<span> </span>"; 
    echo "<a href=\"delete.php?id=" . $person['ID']. "\">Delete User</a>"; 
} 
?> 
<h1>Create a User</h1> 
<form action="create.php" method="post"> 
    Name<input type ="text" name="inputName" value="" /><br /> 
    Description<input type ="text" name="inputDesc" value="" /> 
    <br /> 
    <input type="submit" name="submit" /> 
</form> 
+0

Используйте 'session_unset()'. – F0G

ответ

18

Вместо кнопки, поставить ссылку и перейти ее на другую страницу

<a href="logout.php">Logout</a> 

Затем в logout.php странице, используйте

session_start(); 
session_destroy(); 
header('Location: login.php'); 
exit; 
+1

'session_unset' от API устаревших сеансов до' $ _SESSION'. Используйте 'unset' или не называйте его вообще, поскольку вы все равно уничтожаете сеанс. –

+0

Да! Спасибо, что указали, что это – asprin

+0

Это безумие. Кнопка выхода должна быть POST, а не GET. – Nakilon

8

Если вы хотите, чтобы уничтожить сессию полностью, вам нужно сделать больше, чем просто

session_destroy(); 

Во-первых, вы должны отключить любые переменные сеанса. Затем вы должны уничтожить сеанс, а затем закрыть запись сеанса. Это может быть сделано следующим образом:

<?php 
session_start(); 
unset($_SESSION); 
session_destroy(); 
session_write_close(); 
header('Location: /'); 
die; 
?> 

Причина вы хотите иметь отдельный сценарий для выхода из системы так, что вы случайно не выполнить его на этой странице. Поэтому сделайте ссылку на свой скрипт выхода, затем заголовок будет перенаправлен на корень вашего сайта.

Edit:

Вам нужно удалить() из кода выхода в верхней части вашего сценария. это должно быть только

exit; 
+1

Почему существует дополнительный штамп даже после перенаправления? – ina

+1

@ina хороший вопрос. Причина, по которой умирает, заключается в том, что, если вы когда-либо захотите продолжить работу после перенаправления заголовка, он умеет предотвращать выполнение кода после перенаправления. В этом случае это действительно не нужно, но это хорошая практика, если вы планируете сделать больше после перенаправления. – Mic1780

+0

use $ _SESSION = [] ;, unset ($ _ SESSION) заставит вас не воссоздать сеанс. – wolfrevo

Смежные вопросы