SESSION php

Ich wollte etwas ähnliches wie Sidebar deaktivieren/aktivieren erstellen, wie du geschrieben hast..aber funktioniert bei mir vorne und hinten nicht. :eek:
 
Du vermischst da $_POST und $_SESSION.
Vielleicht hilft es, das Beispiel von Alice textuell zu erläutern:

Du hast eine Seite (im Speziellen ist hier das HTML gemeint - der "View"-Teil), auf der du je nach einer bestimmten Einstellung eine Sidebar hast oder nicht.
PHP:
<?php
// View
if (isSidebarVisible()) {
  // Sidebar ausgeben, hier demonstrativ per echo
  echo '<b>Sidebar!!</b>';
}
Diese bestimmte Einstellung hängt von einem Session-Wert ab. Also implementieren wir dies nun:
PHP:
<?php
// View
// (Diese Funktion ist eher ein View-Helper)
function isSidebarVisible() {
  return isset($_SESSION['sidebar']);
}

if (isSidebarVisible()) {
  // Sidebar ausgeben, hier demonstrativ per echo
  echo '<b>Sidebar!!</b>';
}
Obige Funktion beruht darauf, dass der Session-Wert gesetzt ist (unabhängig vom eigentlichen Inhalt), um zu bestimmen, ob die Sidebar angezeigt werden soll oder nicht.

Nun ist aber die Sidebar immer ausgeblendet, da der Session-Wert sich logischerweise nicht automatisch setzt.
Der Einfachheit halber bauen wir ein kleines Formular auf dieselbe Seite ein. Das Ziel des Formulars ist auch dieselbe Seite. Beim Abschicken wird der Wert gesetzt, wenn er vorher inexistent war, bzw. gelöscht, wenn er vorher existent war.
PHP:
<?php
// View

// Formular Logik
if (isset($_POST['toggleSidebar'])) {
  if (isset($_SESSION['sidebar'])) {
    unset($_SESSION['sidebar']);
  }
  else {
    // Auf den Wert achten wir sowieso nicht, hier aber demonstrativ auf true gesetzt
    $_SESSION['sidebar'] = true;
  }
}
?>
<form action="diese-datei.php">
  <input type="submit" name="toggleSidebar" value="Toggle sidebar" />
</form>

<?php

// (Diese Funktion ist eher ein View-Helper)
function isSidebarVisible() {
  return isset($_SESSION['sidebar']);
}
if (isSidebarVisible()) {
  // Sidebar ausgeben, hier demonstrativ per echo
  echo '<b>Sidebar!!</b>';
}
Dies sollte erst einmal die einfachste Version sein.
Momentan noch unausgearbeitet sind:
- Separation View / View Helper
- Zu hohe Abhängigkeit in Bezug das Prüfen und Setzen von $_SESSION['sidebar']. Was ist, wenn du später einmal den Wert aus der DB holen willst? Du musst deinen View-Code ändern. Das ist schlecht!
 
Zurück