Sam: Session ID manuell eintragen und weitergeben

Hallo,

momentan verlasse ich mich noch darauf, dass PHP sich um das Eintragen, Weitergeben und Auslesen der Session ID kümmert.
Allerdings möchte ich das jetzt auf manuell umstellen, zum einen weil ich auf einen Server wechsle, auf dem das deaktiviert ist und zum anderen, weil der Seitenaufbau ja sicher auch beschleunigt wird, wenn PHP nicht selbst alle Links und Formulare zum Eintragen der Session ID herausfiltern muss.

Jetzt bräuchte ich nur ein paar Tipps, wie man das am besten hinbekommt. Auf Server, auf denen diese Option aktiviert ist, muss ich sie am Anfang gleich per ini_set() deaktivieren, oder? Wie heißt dieser Eintrag nochmal genau und auf was muss man ihn setzen um die Option zu deaktivieren?
Dann möchte ich der Session per session_name() den Namen 'sid' zuweisen.
Dann weiß ich nicht mehr so richtig weiter. Wie bekomme ich dann die Daten aus der Session 'sid' wieder, sodass sie wieder in $_SESSION verfügbar sind?
Ab da weiß ich dann eigentlich wieder weiter. :)

Gruß, Sam

  1. Hallo Sam,

    Auf Server, auf denen diese Option aktiviert ist, muss ich sie am Anfang gleich per ini_set() deaktivieren, oder? Wie heißt dieser Eintrag nochmal genau und auf was muss man ihn setzen um die Option zu deaktivieren?

    Also, die Einstellung lautet use_trans_sid. Allerdings funktioniert das Deaktivieren dieser Einstellung per Script nur ab PHP 5. Wenn Du noch PHP 4 hast, dann musst Du einen "Trick" verwenden:

    ini_set ('url_rewriter.tags', '');

    Das muss allerdings _vor_ session_start() geschehen - genauso wie ein eventueller Aufruf von ini_set ('session.use_trans_sid', 0);

    Dann möchte ich der Session per session_name() den Namen 'sid' zuweisen.

    session_name ('sid'); vor session_start ();

    Dann weiß ich nicht mehr so richtig weiter. Wie bekomme ich dann die Daten aus der Session 'sid' wieder, sodass sie wieder in $_SESSION verfügbar sind?

    Ganz normal per session_start(). Wenn Du use_trans_sid verwendest, musst Du Dich lediglich darum kümmern, dass die Session-ID wieder angehängt wird. PHP definiert die Konstante SID, die entweder leer ist (wenn Cookies unterstützt werden) oder gleich den Inhalt enthält, den man an URLs ranhängen muss.

    <a href="index.php<?php if (!empty (SID)) echo '?'.SID; ?>">Startseite</a>

    sollte ausreichen, damit automatisch ein Link erzeugt wird, der bspw. wie

    <a href="index.php?PHPSESSID=245fff2424">Startseite</a>

    aussieht. Oder, falls Du den Namen der Session in sid geändert hast, so:

    <a href="index.php?sid=245fff2424">Startseite</a>

    Wenn Du ein Formular erzeugst, musst Du ein Hidden-Feld erzeugen:

    <?php
    if (!empty (SID)) {
      echo '<input type="hidden" name="'.session_name().'" value="'.session_id()'">';
    }
    ?>

    Viele Grüße,
    Christian

    1. Gut dass ich gefragt habe, hätte da ganz schön was zusammengemurkst. ;)
      Was genau bewirkt url_rewriter.tags? Dass nichts an den HTML Tags geändert werden darf? Hat das sonstige Auswirkungen, die ich zu spüren bekommen könnte, oder nur auf das automatische Eintragen der Session?
      Und ist es ratsam session.use_trans_sid zu verwenden, oder mache ich mich da wieder von einer Automatisierung abhängig?
      Wenn ich das nicht benutze, muss ich mir dann erst die Session ID per $_REQUEST['sid'] holen?

      Und noch eine Frage, die ich vorher vergessen habe: ich möchte die Session ID in einem Cookie weitergeben, sofern der Anwender welche erlaubt. Macht das irgendeinen großen Unterschied, ausser dass ich auf die Erlaubnis von Cookies prüfen muss?

      Gruß, Sam

      1. hi,

        Was genau bewirkt url_rewriter.tags?

        http://www.php.net/manual/de/ref.session.php

        Und ist es ratsam session.use_trans_sid zu verwenden, oder mache ich mich da wieder von einer Automatisierung abhängig?

        ich dachte, darauf wolltest du verzichten, weil es auf dem neuen server sowieso nicht aktiviert ist?

        Wenn ich das nicht benutze, muss ich mir dann erst die Session ID per $_REQUEST['sid'] holen?

        nein, sich die SID besorgen macht der session-mechanismus m.E. ganz alleine. nur das _übergeben_ der SID musst du noch manuell machen, wenn du es eben nicht PHP überlassen willst.

        Und noch eine Frage, die ich vorher vergessen habe: ich möchte die Session ID in einem Cookie weitergeben, sofern der Anwender welche erlaubt. Macht das irgendeinen großen Unterschied, ausser dass ich auf die Erlaubnis von Cookies prüfen muss?

        ich würde vorschlagen, du beschäftigst dich mit oben verlinkter seite noch mal etwas intensiver.

        gruß,
        wahsaga

        --
        Rest in peace, Dimebag!
        #
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        1. Und ist es ratsam session.use_trans_sid zu verwenden, oder mache ich mich da wieder von einer Automatisierung abhängig?

          ich dachte, darauf wolltest du verzichten, weil es auf dem neuen server sowieso nicht aktiviert ist?

          Sorry, Denkfehler meinerseits, habs inzwischen auch bemerkt. Das Forum braucht eine Editierfunktion. ;)

          ich würde vorschlagen, du beschäftigst dich mit oben verlinkter seite noch mal etwas intensiver.

          Mach ich, wenn ich noch etwas brauche, melde ich mich wieder. :)

          Gruß, Sam

          1. hi,

            ich würde vorschlagen, du beschäftigst dich mit oben verlinkter seite noch mal etwas intensiver.

            Mach ich, wenn ich noch etwas brauche, melde ich mich wieder. :)

            gut, und wenn dir das manual diesbezüglich zu "theoretisch" ist, könnten folgende seiten auch noch nützliche hinweise geben, die vielleicht ein wenig praxisorientierter sind:

            http://php-faq.de/ch/ch-version4_session.html
            http://tut.php-q.net/sessions.html

            gruß,
            wahsaga

            --
            Rest in peace, Dimebag!
            #
            "Look, that's why there's rules, understand? So that you _think_ before you break 'em."