zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Apache, IIS, PHP und Session Cookie

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 15.12.2011, 20:32
Benutzerbild von laborix
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.12.2005
Beiträge: 1.494
laborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Mensch
Standard Apache, IIS, PHP und Session Cookie

Hallo miteinander,

nur eine kleine Frage. Warum erzeugen ein Apache oder IIS ein Cookie im Browser, wenn man mit PHP ein "session_start()" aufruft? Apache und IIS legen im "temp/tmp" ebenfalls ein "sess_..." ab, warum muss der Client dann auch ein Cookie mit der Session ID bekommen?

Irgendwie finde ich keine Antwort, warum das so ist. Habe ihr eine plausible Erklärung für dieses Verhalten?
__________________
Personal stuff
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 15.12.2011, 20:40
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 13.07.2006
Beiträge: 745
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

HTTP ist ein zustandsloses Protokoll.

- Zustandslosigkeit

Würde kein Cookie mit einer Session-ID immerzu mit übertragen, könnte der Server nicht zuordnen, welche Sessiondaten zu einer Anfrage gehören.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 16.12.2011, 15:34
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Marc hat es ja schon geschrieben, aber vielleicht noch etwas detaillierter:

Ein Cookie sind Daten, die bei dem Client gespeichert werden, Session-Daten sind Daten, die auf dem Server gespeichert werden. Da HTTP ein zustandsloses Protokoll ist, wie Marc schrieb, muss der Server den Client ja irgendwie wiedererkennen. Dies wird dadurch erreicht, dass eine Session-ID in einem Cookie gespeichert wird, über diese Session-ID kann dann die Session auf dem Server und somit sämtliche Daten, die auf dem Server zu dieser Session gespeichert wurden, eindeutig zugeordnet werden.

Die Session hat das Cookie also in soweit abgelöst, dass das Cookie nur noch für die Session-ID verwendet wird, die Daten aber "sicherer" auf dem Server gespeichert werden und nicht mehr beim Client selbst.
Mit Zitat antworten
  #4 (permalink)  
Alt 17.12.2011, 15:00
Benutzerbild von laborix
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.12.2005
Beiträge: 1.494
laborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Mensch
Standard

Sorry für die späte Reaktion, bin voll im Weihnachtsstress

Danke euch beiden, dass Hintergrundwissen hat mir gefehlt. Nun stellt sich aber die Frage, ob man eine Session per Default laufen lässt oder erst bei bedarf?

Beispiel: Login-System und Backend Administration eines Blog/CMS ist Session Handling ein "must have".

Sollte aber alles andere ohne Session laufen? Wobei sich hier auch wieder die Frage stellt, wie viele Internet Benutzer ein (PHP Session ID)Cookie auf "Fragen" oder "deaktiviert" gesetzt haben?
__________________
Personal stuff
Mit Zitat antworten
  #5 (permalink)  
Alt 17.12.2011, 15:29
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Wenn du die Session immer startest (session_start), dann wird die Session fortgesetzt, sofern eine gültige Session-ID vom Client geschickt wird. Wird keine gültige Session-ID geschickt, so wird eine neue Session gestartet.

Wird ein Session-Cookie nicht akzeptiert, so wird einfach bei jedem neuen Request eine neue Session gestartet, so einfach ist das.

Die Frage ist halt, ob du den "Overhead" einer Session haben möchtest, wenn es nicht unbedingt erforderlich ist. Wenn du zwischen session-basierten Requests und session-losen Requests unterscheidest, musst du darauf achten, dass du "session_start" entsprechend nur bei den Requests aufrufst, die unter einer Session laufen sollen.

Ich mache es mir da einfach und starte einfach immer eine Session. Man kann ja auch abgesehen von der Authentifizierung nützliche Daten in einer Session speichern (z.B. Suchbegriffe, Sortierungen, Warenkorb, etc.). Akzeptiert jmd. das Cookie nicht, dann kann er halt von diesen Features keinen Gebrauch machen, aber ansonsten funktioniert trotzdem alles.

Die Frage ist, wann soll der User darüber informiert werden, dass das eine oder andere evtl. nur mit akzeptiertem Cookie funktioniert. Ich mache es mir da einfach und setze einfach voraus, dass das Session-Cookie akzeptiert wird, wenn nicht, dann ist man selber schuld.
Mit Zitat antworten
  #6 (permalink)  
Alt 17.12.2011, 17:55
Benutzerbild von Praktikant
Semantikbremse.
XHTMLforum-Kenner
 
Registriert seit: 22.04.2008
Beiträge: 4.985
Praktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz sein
Standard

Die EU sagt bei Cookies: So wenig wie möglich, so viele wie nötig und wenn es sich nicht um eine Funktion wie einen Warenkorb oder eine Anmeldung handelt, die ohne Kekse nicht zu realsieren sind, dann kann man sie setzen.
Informieren muss man immer darüber, in allen anderen Fällen bevo de Keks gesetzt wird.

Hier eine Quelle: heise online - Datenschützer erläutern rechtskonformen Cookie-Einsatz
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade!
Mit Zitat antworten
  #7 (permalink)  
Alt 17.12.2011, 21:12
Benutzerbild von laborix
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.12.2005
Beiträge: 1.494
laborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Mensch
Standard

Zitat:
Zitat von mantiz Beitrag anzeigen
... Ich mache es mir da einfach und starte einfach immer eine Session. Man kann ja auch abgesehen von der Authentifizierung nützliche Daten in einer Session speichern (z.B. Suchbegriffe, Sortierungen, Warenkorb, etc.). ...
Ist das in PHP Developer Kreisen die bevorzugte Methode?

Zitat:
Zitat von Praktikant Beitrag anzeigen
... Informieren muss man immer darüber, in allen anderen Fällen bevo de Keks gesetzt wird. ...
Wie setzt du das um? Ist ein Keks für Suchergebnisse gerechtfertigt?
__________________
Personal stuff
Mit Zitat antworten
  #8 (permalink)  
Alt 17.12.2011, 23:06
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Zitat:
Zitat von laborix Beitrag anzeigen
Ist das in PHP Developer Kreisen die bevorzugte Methode?
Ich denke eher nicht, ich hab's bisher lediglich aus Bequemlichkeit gemacht.

Nach Praktikant's Einwand überlege ich mir gerade allerdings wie ich das bei mir einbaue.

Nur kurz zur Info:
Wenn du die Session wirklich zerstören möchtest, dann reicht ein simples
PHP-Code:
session_destroy(); 
nicht aus, es muss auch das Cookie gelöscht werden, z.B. mit
PHP-Code:
setcookie(session_name(), session_id(), 1'/');
session_destroy(); 
Ansonsten bleibt das Cookie nämlich beim Client aktiv und dieser sendet weiterhin die SessionID.

Wenn das Cookie gelöscht wird/werden kann, dann kann man einfach prüfen, ob das Cookie vom Client gesendet wird und ggfs. die Session automatisch wieder aufnehmen. Ist die Session nicht aktiv, so kann ein Link (oder so) angezeigt werden, wo über die Features informiert wird und ggfs. die Session vom Benutzer manuell gestartet werden kann.

Gefällt mir ganz gut, ich glaub' ich bau' das so ein.
Mit Zitat antworten
  #9 (permalink)  
Alt 17.12.2011, 23:11
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 13.07.2006
Beiträge: 745
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von laborix
Ist das in PHP Developer Kreisen die bevorzugte Methode?
Immer eine Session zu starten? Na ja, sobald du etwa ein dynamisches Seitenelement hast, das sich je nach Login-Status verändert („Sie sind nicht eingeloggt/eingeloggt als xy.“), kommst du nicht wirklich dran vorbei, eine Session zu starten.

Zitat:
Wie setzt du das um? Ist ein Keks für Suchergebnisse gerechtfertigt?
Das ist schwer pauschal zu beantworten. Im Grunde ist eine Suchanfrage aber ein klassischer GET-Request, da tendenziell idempotent. Anders gesagt: Alle relevanten Informationen sollten idealerweise im URL stecken, um etwa Verlinkbarkeit oder Abspeicherbarkeit (Bookmark) zu gewährleisten. Das ist meist, aber eben auch nicht immer, ein wünschenswertes Feature.
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 17.12.2011, 23:48
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Zitat:
Zitat von mermshaus Beitrag anzeigen
Immer eine Session zu starten? Na ja, sobald du etwa ein dynamisches Seitenelement hast, das sich je nach Login-Status verändert („Sie sind nicht eingeloggt/eingeloggt als xy.“), kommst du nicht wirklich dran vorbei, eine Session zu starten.
Genau wegen solcher Situationen habe ich das bisher ebenfalls eher bequem gelöst und dann einfach immer eine Session gestartet. Allerdings ist es tatsächlich kein allzu großer Akt die Session nur nach Bedarf zu starten.

Zitat:
Zitat von mermshaus Beitrag anzeigen
Das ist schwer pauschal zu beantworten. Im Grunde ist eine Suchanfrage aber ein klassischer GET-Request, da tendenziell idempotent. Anders gesagt: Alle relevanten Informationen sollten idealerweise im URL stecken, um etwa Verlinkbarkeit oder Abspeicherbarkeit (Bookmark) zu gewährleisten. Das ist meist, aber eben auch nicht immer, ein wünschenswertes Feature.
Natürlich sollten solche Dinge auch nur ergänzend genutzt werden. Im Falle der Suche beispielsweise wird dann beim Aufruf der Suchseite per header() auf die in der Session gespeicherte Seite weitergeleitet. Ich finde es ist ein nettes Feature, wenn ich auf einer Seite etwas suche, dann ein wenig auf der Seite rumsurfe und wieder die Suche öffne, ich wieder die Ergebnisse meiner letzten Suche angezeigt bekomme.
In Zukunft werde ich in solchen Fällen aber wohl nicht automatisch eine Session starten, sondern je nach Session-Status einen Hinweistext anzeigen, der kurz erläutert, dass eine Session gestartet werden kann und welchen Nutzen man davon hat.
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Dateien auslagern - Include und PHP ArcVieh Serveradministration und serverseitige Scripte 17 27.03.2008 18:09
SESSION / COOKIE - Konflikte poppihasi Serveradministration und serverseitige Scripte 1 23.12.2007 13:29
IIS und Apache alaan Serveradministration und serverseitige Scripte 4 31.03.2007 16:15
apache gibt query-variablen nicht an php weiter docstevie Serveradministration und serverseitige Scripte 2 31.07.2005 01:16
Wamp 5 (lokaler Apache Webserver) mit PHP 5 Beta 4 hemfrie Offtopic 0 27.02.2004 10:05


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:07 Uhr.