Frage

Ich versuche, ein einfaches Test-PHP-Skript für Sitzungen zu erstellen.Im Grunde erhöht es einen Zähler (gespeichert in $_SESSION) jedes Mal, wenn Sie diese Seite aktualisieren.Das funktioniert, aber ich versuche, einen Link zu haben, um die Sitzung zu zerstören, wodurch die Seite mit dem neu geladen wird ?destroy=1 Parameter.Ich habe ein paar if-Anweisungen ausprobiert, um zu sehen, ob dieser Parameter gesetzt ist, und wenn ja, um die Sitzung zu zerstören, aber es scheint nicht zu funktionieren.

Ich habe sogar eine if-Anweisung in den Hauptteil eingefügt, um eine Meldung anzuzeigen, wenn der Parameter festgelegt ist – aber sie scheint nicht erkannt zu werden.

Ich weiß, dass ich etwas Dummes mache (ich bin ein PHP-Neuling), aber ich kann anscheinend nicht finden, was es ist ...

Siehe Code hier:

<?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.";
?>
War es hilfreich?

Lösung

Ich denke, du hast gesagt

$_POST['destroy']

Anstatt

$_GET['destroy']

Sie müssen ein Formular verwenden, wenn Sie eine $_POST-Variable verwenden möchten.$_GET-Variablen werden in der URL gespeichert.

Andere Tipps

Übrigens können Sie verwenden

$_REQUEST['zerstören']

was unabhängig davon funktionieren würde, ob die Daten in einer POST- oder einer GET-Anfrage übergeben werden.

Im PHP-Handbuch Es enthält einen Codeausschnitt zum Zerstören einer Sitzung.

session_start();
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
    setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();

Ja, das wirst du tun wollen

if( $_GET['destroy'] == 1 )

oder

if( isset($_GET['destroy']) )

Ich weiß, dass ich etwas Dummes mache (ich bin ein PHP-Neuling), aber ich kann anscheinend nicht finden, was es ist ...

So wirst du viel lernen ;) Genieße es ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top