2010-10-25 5 views
15

Was ist das wirklich?PHP session_start()

Startet es eine aktuelle Sitzung basierend auf Cookies? Hab das von der PHP-Website bekommen. Wie steuert PHP die Sitzung? Wenn ich eine Sitzung starte, wenn ein Benutzer meine Anmeldeseite öffnet, wozu benutze ich diese Sitzung überhaupt? Kann ich die aktuelle Sitzung verwenden, um Informationen über den angemeldeten Benutzer zu erhalten?

Antwort

17

Das PHP-Session-System ermöglicht das Speichern von Daten sicher in der $_SESSION globalen Array zu sehen. Ein typisches Beispiel ist die Benutzerkennung in der Sitzung zu speichern, wenn sie in ihrem Passwort eingeben:

if ($user = try_login($login, $password)) 
    $_SESSION['user'] = $user; 

Dann können Sie diese Informationen auf allen anderen Seiten zuzugreifen:

if (isset($_SESSION['user'])) 
    // logged in ! 
    echo user_name($_SESSION['user']); 

Die Daten werden gespeichert auf der Server, so dass keine Manipulationsgefahr besteht (auf der anderen Seite, beachten Sie Ihre Festplattennutzung).

Beim Starten der Sitzung wird für die aktuelle Anforderung $_SESSION verwendet. Wenn dies der erste Besuch des Benutzers ist, ist das Array leer und ein neuer Sitzungscookie wird für Sie gesendet.

Das Schließen der Sitzung verhindert lediglich, dass die aktuelle Anforderung $_SESSION verwendet, die Daten bleiben jedoch für die nächsten Anforderungen verfügbar.

Durch das Löschen der Sitzung werden alle Daten für immer gelöscht. Die Sitzungen werden eine bestimmte Zeit nach dem letzten Besuch (in der Regel ca. 30 Minuten) zerstört.

+0

Oooh okay. Es handelt sich also um ein leeres globales Array, mit dem Sie Benutzerwerte (oder andere Werte) speichern können, um ihre einzigartige Erfahrung auf der Website zu erhalten. – Scott

2

PHP session_start startet oder setzt eine HTTP-Sitzung, die in diesem Artikel ziemlich gut erklärt:

http://en.wikipedia.org/wiki/Session_(computer_science)

Das Konzept einer HTTP „Sitzung“ nicht spezifisch für PHP ist, ist es in vielen genutzt (alle?) serverseitige HTTP-Frameworks als eine Möglichkeit, um zu ermöglichen, dass ein Zustand über verschiedene Requests/Responses hinweg gespeichert/zugeordnet wird (da HTTP staatenlos ist). Ein eindeutiges Token (das oft, aber nicht immer in einem Cookie gespeichert ist) identifiziert einen bestimmten Client, und der Server kann die "Sitzung" zuordnen.

Hier einige weitere Informationen über Sitzungen und PHP insbesondere die helfen können: http://www.php.net/manual/en/book.session.php

2

Wie heißt es im Handbuch

session_start() erzeugt eine Session oder nimmt die aktuelle basierend auf einer Sitzungs-ID übergeben über eine GET- oder POST-Anfrage oder über einen Cookie übergeben.

Wenn Sie eine neue Sitzung auf Ihrer Anmeldeseite starten, ist die Sitzung zu Beginn leer. Sie können darin speichern, was Sie wollen, zum Beispiel, speichern Sie die Benutzer-ID, sobald der Benutzer sich angemeldet hat. Die Sitzungsdaten werden zerstört, wenn Sie die Sitzung schließen.

Sie könnten alle Kapitel in der Session Extension Manual Pages lesen möchten und auch

9

Ich nehme an, Sie möchten wissen, was eine PHP-Sitzung für Sie, den Programmierer, bedeutet.

Wenn Sie session_start() ausführen, sagen Sie PHP, dass Sie die Sitzung verwenden möchten. Dies wird Ihnen als ein Array namens $ _SESSION zur Verfügung gestellt. Sie können das wie jedes andere Array verwenden, mit dem Unterschied, dass die Inhalte, die Sie dort einfügen, dort von einer Seite zur nächsten bleiben (vorausgesetzt, Sie verwenden session_start() am Anfang jeder Seite).

Der tatsächliche Mechanismus kann je nach Konfiguration (php.ini) variieren, aber eine typische Installation kann Cookies für die Sitzung verwenden. Angenommen, Ihr Webserver ist auf Linux und Sie verwenden Cookies. Sie haben die folgende

session_start(); 
$_SESSION['name']='Bob'; 

Wenn PHP dies sieht es erstellt eine Textdatei mit einem halb-zufälligen Namen (zB sess_a3tfkd5558kf5rlm44i538fj07), klebt die $ _SESSION Inhalt dort als einfacher Text und sendet dann ein Cookie an den Benutzer mit der Sitzungs-ID, mit der die Sitzungsdatei gefunden werden kann (zum Beispiel a3tfkd5558kf5rlm44i538fj07).

Das nächste Mal, wenn der Benutzer zurückkommt, gibt er die Sitzungs-ID in seinem Cookie ein, PHP geht zur entsprechenden Datei und lädt seinen Inhalt in $ _SESSION.

Sie werden feststellen, dass die tatsächlichen Informationen auf dem Server aufbewahrt werden, während der Benutzer nur eine ID erhält. Irgendwie, als würde man in einem Club seinen Mantel abgeben und ein Ticket mit einer Nummer darauf bekommen.

+0

also, wenn ich Sitzung auf jeder Seite starte, wie PHP wissen, um die gleichen Informationen von der $ SESSION-Variable von der letzten Seite, diesem Cookie zu erhalten? – Scott

+1

@Scott - Wenn der Benutzer ein Cookie mit einer Sitzungs-ID hat, die mit einer vorhandenen Sitzung übereinstimmt (vorhandene Sitzungsdatei), setzt session_start() die Sitzung fort. Sonst beginnt es ein neues. –

0

Sie können die PHP-Sitzung mit dem Cookie vergleichen, aber Session ist die viel sicherere Art der Speicherung von Informationen. Cookie speichern Daten auf dem Computer des Benutzers, aber Session-Speicher auf dem Server in einer temporären Datei sicher. Ich habe Sitzung diskutiert und wie es Post auf einem meiner Blog verwenden - How to start a PHP session, store and accessing Session data?

Im Folgenden ein Beispielcode ist Daten in PHP-Session zu speichern:

<?php 
session_start(); 
$_SESSION["name"] = "John"; 
?> 

Unter dem Beispiel ist die Sitzungsdaten von retriving :

<?php 
session_start(); 
echo $_SESSION["name"]; 
?> 

Der obige Code zeigt den Namen "John" an.

Quelle: How to start a PHP session, store and accessing Session data?

Verwandte Themen