2009-08-07 7 views
5

Ich versuche, die PHPSESSID über eine HTTP-GET-Variable für einen cookie-losen Client zu senden.Wie kann ich PHPSESSID in der URL senden?

Ich habe dies in verschiedenen Drupal-Implementierungen gesehen, wo ?PHPSESSIONID=123ABC an jeden Link anfügt, aber wie kann ich dies in PHP angeben und gibt es eine Möglichkeit, den GET-Parameter zu ändern, so könnte es sein? Token = 123ABC oder sogar über HTTP POST gesendet?

Standard-LAMP-Stack, auf dem das Zend-Framework läuft.

Danke!

+0

Sie sollten die Sitzungs-ID nicht in GET-Variablen setzen, es ist ein Sicherheitsrisiko. Es gibt keinen relevanten Browser, der keine Cookies unterstützt. – stefanw

+2

stefanw - es ist speziell für einen Cookie-losen Client, wie angegeben. – Sledge

Antwort

7

ein Cookie oder nicht verwenden wird durch diese PHP-Optionen konfiguriert:

Wenn die erste Eins gesetzt ist, werden Cookies verwendet, wenn möglich.
PHP sollte erkennen, ob Cookies aktiviert sind oder nicht, und sie nur verwenden, wenn sie vom Client unterstützt werden.


Zur Verabschiedung der Session-ID aktivieren, indem anstelle von Cookies GET, könnten Sie session.use_trans_sid aktivieren müssen, die standardmäßig deaktiviert ist (was bedeutet, dass durch defaut, Session-ID nur von Cookies übergeben wird - nie von GET).

Beachten Sie jedoch, dass PHP bei aktivierter Option die Sitzungs-ID zumindest für die erste Seite, die jeder Benutzer Ihrer Website aufrufen wird, an GET weiterleitet, da sie den Cookie zunächst nicht haben und Die einzige Möglichkeit zu überprüfen, ob Cookies unterstützt werden, besteht darin, eine zu setzen und sie auf der nächsten Seite zu lesen.
und Benutzer, die Cookies nicht unterstützen, auch über Suchmaschinen ich wahrscheinlich würde sagen, dass die Session-ID haben - und das ist nicht schön :-(


Und Sie könnten eine auch nehmen wollen Blick auf session.name den Namen des Schlüssels (auf auf „Token“ anstelle von „PHPSESSID“, meine ich) zu setzen


Für weitere Informationen können Sie einen Blick auf die Session Handling Abschnitt des Handbuchs nehmen :-)

1

Sie können PHPSESSID mit session_name() oder session.name in Ihrer php.ini-Datei ändern (oder ini_set()).

Für cookielose Clients gibt es die Option session.use_trans_sid php.ini - Sie sollten wissen, dass dies Probleme verursachen kann - zum Beispiel Benutzer, die URLs mit Sitzungs-IDs weitergeben oder Suchmaschinen, die solche URLs aufnehmen.

1

Doing m anually:

if ($_REQUEST['token']) 
    session_id($_REQUEST['token']); 
session_start(); 

print("foo=".$_SESSION['foo']++."<br />". 
     "<a href={$PHP_SELF}?token=".session_id().">link</a><br />"); 
print("<form method=POST>". 
     "<input type=hidden name=token value=".session_id()." />". 
     "<input type=submit /></form>"); 
0
  1. eine Login-Seite erstellen, muss der Benutzer nicht ohne korrekte ID und Passwort einloggen.
  2. Nach der Anmeldung kommt der Benutzer nach Hause, hier kann sich der Benutzer abmelden und zur Anmeldeseite zurückkehren.
  3. Der Benutzer darf nicht auf die Startseite zugreifen, ohne die Anmeldeseite zu durchlaufen.
Verwandte Themen