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.";
?>
È stato utile?

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...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top