web-dev-qa-db-de.com

PHP Sitzungsvariable nicht setzen

Ich bin ein Noob-Programmierer und entschuldige mich im Voraus für offensichtliche Fehler. Ich habe die letzte Woche damit verbracht, eine Art Produktdatenbank zu erstellen. Ich habe auch den Punkt, an dem ich Produkte über ein Formular hinzufügen, alle hinzugefügten Produkte anzeigen kann usw. Ich verwende Sitzungen, die über die Formulareingabedaten erstellt werden. Ich habe Mühe, die Funktion zum Löschen einer Produktseite einzubinden. Ich habe versucht, die Variable mit unset zu löschen, kann die Variable jedoch nicht löschen. 

ADD-Produktseite, auf der die Sitzungsvariable festgelegt wird: 

$_SESSION['Products'][] = $_POST; //is how i set the session on the add products page. 

unset $_SESSION['Products'][]; //is how i have tried to clear the session although it does not work.

Jeder Punkt in die richtige Richtung wird geschätzt! 

30
boothprod

Sie können die Sitzungsvariable folgendermaßen aufheben:

  1. session_unset - Gibt alle Sitzungsvariablen frei (gleich wie: $_SESSION = array();)
  2. unset($_SESSION['Products']); - Löscht nur den Produktindex in der Sitzungsvariablen. (Remember: Sie müssen wie eine Funktion verwenden, nicht wie Sie es verwendet haben)
  3. session_destroy - Zerstört alle in einer Sitzung registrierten Daten

Um den Unterschied zwischen session_unset und session_destroy zu kennen, lesen Sie diese Antwort - SO . Das hilft.

59
Thamilan

Unset ist eine Funktion. Daher müssen Sie angeben, welche Variable zerstört werden muss. 

unset($var);

In Ihrem Fall 

unset ($_SESSION["products"]);

Wenn Sie die gesamte Sitzungsvariable zurücksetzen müssen, rufen Sie einfach auf

session_destroy ();
6
Don D

Wenn Sie die Sitzung vollständig löschen möchten, können Sie Folgendes verwenden:

session_unset();
session_destroy();

Beides ist eigentlich nicht notwendig, aber es tut nicht weh.

Wenn Sie nur einen bestimmten Teil löschen möchten, brauchen Sie Folgendes:

unset($_SESSION['Products']);
//or
$_SESSION['Products'] = "";

je nachdem, was Sie brauchen.

3
JRsz

unset ist eine Funktion, kein Operator. Verwenden Sie es wie unset($_SESSION['key']);, um den Sitzungsschlüssel aufzuheben. Sie können jedoch auch session_destroy(); verwenden. (Stellen Sie sicher, dass Sie die Sitzung auch mit session_start(); starten.)

1
mehulmpt

Ich füge diese Antwort hinzu, falls jemand aus dem gleichen Grund auf diese Seite kommt wie ich. Ich habe nur eine peinliche Zeit verschwendet, um das Problem zu finden. Ich habe angerufen:

unset($_SESSION['myVar']);

von einem Logout-Skript. Navigieren Sie dann zu einer Seite, für die ein Login erforderlich ist, und der Server dachte immer noch, ich sei angemeldet. Das Problem war, dass das Abmeldeskript nicht aufrief:

session_start();

Das Zurücksetzen einer Session var FUNKTIONIERT NICHT, es sei denn, Sie starten die Session zuerst.

1
Jeff Martin