Domanda
Sto cercando di eseguire un semplice script php di prova per le sessioni.Fondamentalmente incrementa un contatore (memorizzato in $_SESSION
) ogni volta che aggiorni quella pagina.Funziona, ma sto cercando di avere un collegamento per distruggere la sessione che ricarica la pagina con il file ?destroy=1
parametro.Ho provato un paio di istruzioni if per vedere se quel parametro è impostato e, in tal caso, per distruggere la sessione, ma non sembra funzionare.
Ho anche inserito un'istruzione if nel corpo principale per far apparire un messaggio se il parametro è impostato, ma non sembra essere rilevato.
So che sto facendo qualcosa di stupido (sono un principiante di PHP) ma non riesco a trovare di cosa si tratta...
Vedi il codice qui:
<?php
if ($_POST['destroy']) {
session_destroy();
} else {
session_start();
}
?>
<html>
<head>
<title>Session test</title>
</head>
<body>
<?php
if (isset($_POST['destroy'])) {
echo "Destroy set";
}
$_SESSION['counter']++;
echo "You have visited this page " . $_SESSION['counter'] . " times" . "<BR>";
echo "I am tracking you using the session id " . session_id() . "<BR>";
echo "Click <a href=\"" . $_SERVER['PHP_SELF'] . "?destroy=1\">here</a> to destroy the session.";
?>
Soluzione
Penso che tu abbia messo
$_POST['destroy']
Invece di
$_GET['destroy']
È necessario utilizzare un modulo se desideri utilizzare una variabile $_POST.Le variabili $_GET sono memorizzate nell'URL.
Altri suggerimenti
A proposito, puoi usare
$_REQUEST['distruggi']
che funzionerebbe indipendentemente dal fatto che i dati vengano passati in una richiesta POST o GET.
Nel Manuale PHP ha uno snippet di codice per distruggere una sessione.
session_start();
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();
Sì, vorrai farlo
if( $_GET['destroy'] == 1 )
O
if( isset($_GET['destroy']) )
So che sto facendo qualcosa di stupido (sono un principiante di PHP) ma non riesco a trovare di cosa si tratta...
è così che imparerai molto ;) divertiti...