2012-08-31 16 views
7

Ho questo codice e ho bisogno del codice per aggiungere un pulsante di disconnessione, qualcuno può scrivere il codice per un pulsante di disconnessione che disconnetterà l'utente, ho letto qualcosa sulla sessione di distruzione ma non so come scrivi il codice, grazie!Pulsante di uscita 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

Utilizzare 'session_unset()'. – F0G

risposta

18

Invece di un pulsante, inserire un link e passare ad un'altra pagina

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

Poi, nel logout.php pagina, usi

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

'session_unset' proviene dalla sessione API deprecata prima che esistesse' $ _SESSION'. Usa 'unset', o non chiamarlo affatto mentre stai distruggendo comunque la sessione. –

+0

Sì! Grazie per avermelo fatto notare – asprin

+0

Questo è folle. Il pulsante di disconnessione dovrebbe essere POST, non GET. – Nakilon

8

Quando si vuole distruggere completamente una sessione, devi fare di più quindi solo

session_destroy(); 

Innanzitutto, è necessario rimuovere tutte le variabili di sessione. Quindi devi distruggere la sessione seguita chiudendo la scrittura della sessione. Questo può essere fatto dal seguente:

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

La ragione si vuole avere uno script separato per un logout è così che non si accidentalmente eseguire sulla pagina. Quindi crea un link allo script di disconnessione, quindi l'intestazione reindirizzerà alla radice del tuo sito.

Edit:

è necessario rimuovere la() dal codice di uscita nella parte superiore dello script. dovrebbe essere solo

exit; 
+1

Perché c'è un dado extra anche dopo il reindirizzamento? – ina

+1

@ina buona domanda. Il motivo per cui il dado è attivo è che se si desidera continuare dopo il reindirizzamento dell'intestazione, il dado impedisce l'esecuzione del codice dopo il reindirizzamento. In questo caso non è davvero necessario, ma è una buona pratica se si prevede di fare di più dopo il reindirizzamento. – Mic1780

+0

usa $ _SESSION = [] ;, unset ($ _ SESSION) renderà impossibile ricreare la sessione. – wolfrevo

Problemi correlati