Archiv

Artikel Tagged ‘Sessions einzeln löschen’

Sessions Tutorial (PHP-Grundlagen)

12. Mai 2011 Keine Kommentare

Was sind Sessions?

Durch Sessions erhält jeder Browser beim Besuch einer Website (Sitzung) eine eindeutige Identifikationsnummer zugewiesen.

 

Wofür braucht man Sessions?

Sessions werden in erster Linie für den Zugriff auf gespeicherte Werten über Seitenaufrufe hinweg benötigt. Zudem weisen sie jedem Besucher eine eindeutige Session-ID zu.

 

Wie funktionieren Sessions allgemein?

Durch das anlegen einer Session wird eine Session-ID generiert. PHP speichert alle Daten, die unter dieser ID anfallen, zentral und abrufbereit auf dem Server. Im Normalfall merkt sich der Browser nur die Session-ID mithilfe eines Cookies.

 

Warum werden bei mir keine Session-IDs gespeichert?

Hat der Besucher in seinem Browser das speichern von Cookies aus diversen Gründen nicht erlaubt, kann sich der Browser die erstellte Session-ID nicht merken. Es muss eine andere Lösung gefunden werden.

Die Möglichkeiten sind eher begrenzt. Die Session-ID kann jedem Link mittels GET

<a href="seite_2.php<?php echo session_id(); ?>">Seite 2</a>

oder bei jedem Formular mittels POST

<input type="hidden" name="<?php echo session_name(); ?>" value="<?php echo session_id(); ?>">

übergeben werden.

 

“Uh, das hört sich etwas kompliziert an, ich lass die Finger lieber davon!” – Neeein, es ist nur halb so schlimm!

 

Session in PHP starten:

Um eine Session zu starten wird folgende Funktion benötigt:

session_start();

Beispiel:

<?php

// Session starten
session_start();

echo "Session ID: ".session_id();
echo "<br/>";
echo "Session Name: ".session_name();

?>

Hinweis:

Es ist wichtig, dass keine Zeichen vor dem Aufruf der Funktion ausgegben werden, ansonsten wird folgende Warnung von PHP ausgegeben:

 

Warning: session_start() [function.session-start]: Cannot send session cookie – headers already sent by (output started at C:\htdocs\sessions\session.php:2) in C:\htdocs\sessions\session.php on line 8

 

Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at C:\htdocs\sessions\session.php:2) in C:\htdocs\sessions\session.php on line 8

 

Hier zwei kurze Beispiele, die diese PHP Warnung erzeugen:

<?php

echo "Irgendeine Ausgabe!";

// Session starten
session_start();

echo "Session ID: ".session_id();
echo "<br/>";
echo "Session Name: ".session_name();

?>
<!-- Leerzeichen in HTML -->
<?php

// Session starten
session_start();

echo "Session ID: ".session_id();
echo "<br>";
echo "Session Name: ".session_name();

?>

 

Anwendung – Session benutzen

Nachdem die Session mit session_start(); erzeugt bzw. neu geladen wurden, steht dem Programmierer in PHP das globale Array $_SESSION zur Verfügung. In diesem Array können nun Werte gespeichert werden.

In diesem Beispiel werden auf der ersten Seite der Name und das Land mit den Werten “Mustangore” und “Deutschland” in die Session gespeichert. Auf der zweiten Seite werden diese Werte, falls existent, ausgegeben.

<?php

/* Datei: seite_1.php */

// Session starten
session_start();

echo "Session ID: ".session_id();
echo "<br/>";
echo "Session Name: ".session_name();

// Werte 'name' und 'land' in die Session speichern
$_SESSION["name"] = "Mustangore";
$_SESSION["land"] = "Deutschland";

?><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<body>
		<br/> <br/>
		<a href="seite_2.php">Weiter zu Seite zwei</a>
	</body>
</html>

Auf die gespeicherten Werte wird folgendermaßen zugegriffen:

<?php

/* Datei: seite_2.php */

// Session starten
session_start();

// Überprüfen, ob die Werte in der Session vorhanden sind
if(isset($_SESSION["name"]) && isset($_SESSION["land"])) {
	echo "Dein Name lautet: ".$_SESSION["name"];
	echo "<br/>";
	echo "Du kommst aus: ".$_SESSION["land"];
	echo "<br/><br/>";
	echo "<a href=\"seite_3.php\">Weiter um Wert 'land' zu entfernen</a>";
} else {
	echo "Fehler: Der Wert 'name' oder 'land' existiert nicht!";
	echo "<br/>";
	echo "<a href=\"seite_1.php\">Zurück zur Startseite</a>";
}

?>

 

Einzelne Werte aus der Session entfernen

Um einzelne Werte aus der Session zu löschen, wird die Funtkion unset() benötigt. Wir bleiben beim oben genannten Beispiel und erstellen die Datei ‘seite_3,php’:

<?php

/* Datei: seite_3.php */

// Session starten
session_start();

if(isset($_SESSION['land'])) {
	unset($_SESSION['land']);

	echo "Der Wert 'land' wurde entfernt!";
	echo "<br/>";

	if(isset($_SESSION['land'])) {
		echo "'land':".$_SESSION['land'];
	} else {
		echo "Der Wert 'land' wurde erfolgreich aus der Session entfernt!";
	}

	echo "<br/><br/>";
	echo "<a href=\"seite_4.php\">Komplette Session löschen</a>";
} else {
	echo "Fehler: Der Wert 'land' existiert nicht!";
	echo "<br/>";
	echo "<a href=\"seite_1.php\">Zurück zur Startseite</a>";
}

?>

 

Die komplette Session löschen

<?php

/* Datei: seite_4.php */

// Session starten
session_start();

// Löschen aller Session Werte.
$_SESSION = array();

// Da die komplette Session gelöscht werden soll, muss auch das Session-Cookie 'gelöscht' werden
if(ini_get("session.use_cookies")) {
	$params = session_get_cookie_params();
	setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"]);
}

// Löschen der Session
session_destroy();

?>

 

Hier findest Du in einem .zip Archiv die vier Beispielseiten aus diesem Artikel:

Session Beispielseiten

 

- Mustangore