Hallo Julian,
Sessions nur dann, wenn der Client temporäre Cookies akzeptiert.
Sonst arbeinte mit Auth: Formular und header() und Err401.
Das das mit temporären Cookies funktioniert, ist mir bekannt.
Meinst du mit Auth: header() irgendwas mit .htaccess?
Es ist ein ähnliches Verfahren, nur dass Du dann in JEDEM Script selber prüfen musst, ob $HTTP_SERVER_VARS["PHP_AUTH_USER"] und $HTTP_SERVER_VARS["PHP_AUTH_PW"] dir gefallen, also zusammenpassen.
PHP unterstützt Sessions auf zwei Arten:
Hinzufügen eines Cookies, der ja bei jedem Seitenaufruf der passenden Domain vom Client an den Server übertragen wird. Wenn Du jetzt session_start() aufrufst, sucht php nach dem Cookie und stellt die Verbindung zur passenden Sessiondatei in session_save_path (standard: /tmp/ würde ich aber verschieben auf /tmp/irgendwas/...) wieder her. Die Variablen $HTTP_SESSION_VARS werden in diesem Moment automatisch aus der Datei wieder hergestellt und beim Ende des Scriptes automatisch wieder dorthin gesichert. Wenn Du also etwas aufbewahren willst, brauchst Du es nur in eine $HTTP_SESSION_VARS["DeinName"] zu schreiben.
Benutze nicht mehr die alten Funktionen session_register() & CO.
Die zweite möglichkeit ist, dass php automatisch in deinem Formular Hidden-Fields und an jeden Link einen Datenbereich anhängt. Dort wird dann die Session-ID untergebracht und kann so von PHP beim Seitenaufruf ___aus einer solchen Sietwe heraus___ wiedergefunden werden. Wenn allerdings eine Deiner Seiten auf eine andere Art aufgerufen wird (Vor- und Zurückbuttons im Browser, Direktaufruf per Adresszeile, Favoriten oder Bookmarks...) dann fehlen diese Angaben ja. Die Seite würde dann ohne Session laufen oder, viel schlimmer, mit einer neuen. Die Methode phne Cookies ist daher ungeeignet für die Praxis.
Du musst sowieso vor jedem session_start() nachschauen, ob ein "Session-Cookie" da ist, mit Ausnahme des ersten session_start() natürlich. Wenn Du Sessions ausschließlicz mit Cookies benutzt, dann reicht es, auf Vorhandensein von $HTTP_COOKIE_VARS[SESSION_NAME] zu prüfen. SESSION_NAME ohne "" in den eckigen Klammern ist eine Konsante, die Du Dir baust und hinter der sich DEIN name für Sessions versteckt. Den stellst Du dann in jedem Script immer erst mit session_name(SESSION_NAME) ein, bevor du session_start() aufrufst. Alles Andere macht PHP dann für Dich.
Sessions in den "geschützten Seiten" nur starten, wenn der "Session-Cookie" übertragen wurde
if (strlen($HTTP_COOKIE_VARS[SESSION_NAME])==32)
{
session_name(SESSION_NAME);
session_start();
}
Der Teil mit Auth folgt im nächsten Posting
Liebe Grüße aus http://www.braunschweig.de
Tom
Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.