Ingo: Sessions

Weiß jemand wo eingestellt werden kann ob Sessions falls Cookies im Browser deaktiviert sind automatisch an die URL gehängt werden ???
Bestimmt irgendwo in der php.ini  aber wo ???

  1. Hi

    ich villeicht irgend was wie   if(!cookie)
    {
    blabla
    }
    else
    {
    session
    }

    oder so

    aber in der .ini glaub ich ned

    mfg Alex

    1. Hm des Ding is ...hier auf meinem webserver geht das per default...und auf dem server auf den ich das hochgeladen habe geht es eben nicht.
      Wollte wissen was die einstellen müssen damit das funktioniert.

      1. Hallo,

        selbstverständlich geht das in der INI.

        Schau mal im Handbuch unter "Fallback".

        Trotzdem würde ich Dir von der Methode abraten, da nicht zuverlässig. Wenn man blättert mit vor und zurück-Button auf Seiten vor der Anmeldung oder eine Direkteingabe in der Adresszeile macht oder...   dann fehlt immer die Session-ID

        Dann nimm lieber die "AUTH401"-Methode und schreib Dir deine Session-Save-Method selbst. Das geht ganz einfach.

        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.
        1. An sich ist das ja egal bzw sogar wünschenswert, da es sich um ein loginsystem handelt.
          aber das mit dem  "AUTH401" System hört sich interessant an haste da ne gute Quelle im Netz die du empfehlen kannst??

          Danke schonmal.

          1. Hallo!

            An sich ist das ja egal bzw sogar wünschenswert, da es sich um ein loginsystem handelt.
            aber das mit dem  "AUTH401" System hört sich interessant an haste da ne gute Quelle im Netz die du empfehlen kannst??

            Er meint http://www.php3.de/manual/de/features.http-auth.php, wobei ich die Bedenken hier nicht teile. Es kommt drauf an was man braucht, wenn man nur eien Authentifizierung braucht geht das gut ohne Sessions, aber wenn Daten über die Session serverseitig speichern möchte würde ich immer die PHP Session-Funktion verwenden, die ist IMHO sehr gut und vor allem _sehr_ einfach zu handlen.
            Kommt auch noch drauf an welche PHP-Version man hat und welche Einflußmöglichkeit man auf deren Einstellunegn hat.

            Grüße
            Andreas

        2. Hi Thomas!

          Trotzdem würde ich Dir von der Methode abraten, da nicht zuverlässig. Wenn man blättert mit vor und zurück-Button auf Seiten vor der Anmeldung oder eine Direkteingabe in der Adresszeile macht oder...   dann fehlt immer die Session-ID

          Dann nimm lieber die "AUTH401"-Methode und schreib Dir deine Session-Save-Method selbst. Das geht ganz einfach.

          Naja, so einfach wie die Session-Funktionen ist es wohl nicht. Außerdem braucht man sich hier um nichts zu kümmern, baut keine eigenen bugs ein, außerdem ist es nicht so einfach Arrays und Objekte zu speichern und wiederherzustellen, außerdem ist es eher selten das jemand auf _einer_ Internetseite Eingaben in der Adresszeile tätigt, und auch ist es mir bisher noch nie passiert das ich mich irgendwo durch den "zurück-Button" aus Versehen ausgeloggt habe und was nicht zu vernachlässigen ist - das ganze funktioniert nur in der Modul-Version von PHP, also in den seltensten Fällen. Da kommt es schon erheblich öfter vor das der User Cockies aktiviert hat und somit die von Dir genannten Problem gar keine Relevanz besitzen.
          Nicht das ich da was gegen die HTTP-Authentifizierung hätte - die benutze ich selbstr häufig udn gerne -  nur hier ging es um Sessions und nicht um Authentifizierung, das sind IMHO 2 verschiedene Themenbereiche!

          Viele Grüße
          Andreas

          1. Hallo Andreas,

            Trotzdem würde ich Dir von der Methode abraten, da nicht zuverlässig. Wenn man blättert mit vor und zurück-Button auf Seiten vor der Anmeldung oder eine Direkteingabe in der Adresszeile macht oder...   dann fehlt immer die Session-ID

            Dann nimm lieber die "AUTH401"-Methode und schreib Dir deine Session-Save-Method selbst. Das geht ganz einfach.

            Naja, so einfach wie die Session-Funktionen ist es wohl nicht. Außerdem braucht man sich hier um nichts zu kümmern, baut keine eigenen bugs ein, außerdem ist es nicht so einfach Arrays und Objekte zu speichern und »»

            Mit den PHP-Funktionen serialize() und unserialize() ist das ganz einfach. Zum wiederherstellen der Sessiondaten am Anfang des Scriptes muss man nach erfolgter Authentifikation über die Credentials ($_SERVER["PHP_AUTH_USER"] und $_SERVER["PHP_AUTH_PW"] nur aus der für den User spezifizierten Sessiondatei die daten lesen und zum Speichern am Scriptende mit der Funktion register_shutdown_function() eine Speicherfunktion für $_SESSION anmelden. Das wars schon.

            wiederherzustellen, außerdem ist es eher selten das jemand auf _einer_ Internetseite Eingaben in der Adresszeile tätigt, und auch ist es mir bisher noch nie passiert das ich mich irgendwo durch den "zurück-Button" aus Versehen

            Das passiert schneller, als man möchte

            ausgeloggt habe und was nicht zu vernachlässigen ist - das ganze funktioniert nur in der Modul-Version von PHP, also in den seltensten Fällen. Da kommt es schon erheblich öfter vor das der User Cockies aktiviert hat und somit die von Dir genannten Problem gar keine Relevanz besitzen.

            Wenn die User Cookies aktiviert haben, ist das natürlich besser. Hab ich ja auch gesagt. Aber dann kommt erst die Auth401-Methode und erst dann die trans_sid-Methode. Diese These halte ich solange aufrecht, bis Du mir wirklich und leibhaftig das Gegenteil beweist.

            Nicht das ich da was gegen die HTTP-Authentifizierung hätte - die benutze ich selbstr häufig udn gerne -  nur hier ging es um Sessions und nicht um Authentifizierung, das sind IMHO 2 verschiedene Themenbereiche!

            Das ist ja sowieso eines unser Dauerdisputthemen *gg*

            Ich plädiere trotzdem immer für die datentechnisch "sicherste" Methode, das heißt diejenige, die zuverlässig ist und dennoch den Aufwand rechtfertigt.

            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.
            1. Hallo!

              Das ist ja sowieso eines unser Dauerdisputthemen *gg*

              Richtig ;-)

              Ich plädiere trotzdem immer für die datentechnisch "sicherste" Methode, das heißt diejenige, die zuverlässig ist und dennoch den Aufwand rechtfertigt.

              Klar! Aber sagen wir mal ich will einen Warenkorb mit Sessions realisieren. Will ich da allen Besuchern zumuten sich erst anzumelden und zu authentifizieren? Da ist man dann zwar Datantechnisch auf der sicheren Seite, aber ob  man dann so viel verkauft wage ich zu bezweifeln!

              Session und Authentifizierung sind 2 paar Schuh. Die Verknüpfung kommt nur daher, das viele Leute kein Auth-Fenster wünschen, sondern ein html-Formular zur Eingabe der Zugangsdaten,  und weil sie vielleicht serverseitig gar keine andere Möglichkeit haben. Daher enstehen die viele Diskussionen um die sessionbasierte Authentifikation.

              Wenn  man technisch nicht eingeschränkt ist gibt es 2 Anwendungen.

              Einmal Anwendungen wie ein Warenkorb, halt alles wo keine Authentifizierung erfolgen soll, dafür ist die PHP Session-Funktion wirklich sehr gut geeignet.

              2. sind die Anwendungen, wo eine Authentifizierung erforderlich ist. Da gibt es dann mehrere Möglichkeiten.
              Unter anderem

              • die oft diskutierte Session-Authentifizirung,
              • die php/HTTP-Authentifiezierung, oder
              • die echte HTTP-Authentifizierung durch den Server.

              Da kommt es jetzt vor allem drauf an was genau man durch die Authentifizierung erreichen will  , was man zur Verfügung  hat und in welcher Form man die Zugangsdaten speichern will. Im Allgemeien bevorzuge ich hier die HTTP-Authentifizierung durch den Apachen, das ist imho das sauberste, sicherste und schnellste, und an den Remote-User kommt man auch in PHP, und die Zugangsdaten kann man mit dem mysql_auth Modul des Apache auch komplett in MySQL speichern, oder man hat hierfür halt eine extra flat-file, so mache ich das meistens. Das muß nur einmal eingereichtet werden und man merkt nichts mehr davon. Außerdem ist man dann im internen Bereich nicht überall auf eine Scriptsprache festgfelegt wie bei der PHP-Auth oder Session-methode, da sich so nur PHP-Scripte schützen lassen.
              Wenn denn eine Authentifizeirung erfolgen soll, dann kann ich auch user-spezifische Daten fest in einer Tabelle speichern und bei jedem Besuch auslesen. Das ist IMHO der Normalfall, da braucht man gar keine Sessions für!

              So sehe ich das ganez Thema. Ich würde mich freuen wenn Du mal darauf eingehen würdest, vielleicht liege ich ja auch falsch!

              Viele Grüße
              Andreas

              1. Hallo Thomas!

                ... ich warte ...

                ;-)

                Grüße
                Andreas

                PS: sorry fürs "künstliche am Leben halten"

  2. Bestimmt irgendwo in der php.ini  aber wo ???

    Genau!
    Und zwar:
    session.use_cookies
    Definiert, ob überhaupt Cookies verwendet werden sollen.
    Und die andere Einstellung ist
    session.use_trasn_sid
    Wenn On, werden die Sess-Ids automatisch angehängt.

    1. Sorry! Habe mich schon wider verschrieben:
      Es heißt natürlich
      session.use_trans_sid

      Viel Spaß noch!

    2. Besten dank auch.

    3. Hallo!

      Und die andere Einstellung ist
      session.use_trasn_sid
      Wenn On, werden die Sess-Ids automatisch angehängt.

      Es ist ein Fallback-Mechanismus, wenn der Browser Cockies ablehnt oder mit session.use_cookies=0 die Verwendung von Cockies in der php.ini verboten wurde, werden in die in url_rewriter.tags definierten HTML-Elemente die Session_id eingefügt.

      Grüße
      Andreeas

      1. Echt?
        Mein Browser nimmt keine Cookies an, in der php.ini steht session.use_cookies=1 und es läuft nicht...

        Wenn ich hingegen Cookies annehme, stehen da trotzdem die Sess-Ids drin.

        Wie kommt das? Wie sollte ich (für non-cookie-user) ein Script ändern, wenn ich an die php.ini nicht drankomme?

        1. Echt?
          Mein Browser nimmt keine Cookies an,

          Das sind Session-Cookies, die werden meist anders behandelt, mußt mal in Deinen Browsereinstellungen _genau_ nachgucken.

          in der php.ini steht session.use_cookies=1 und es läuft nicht...

          Wenn ich hingegen Cookies annehme, stehen da trotzdem die Sess-Ids drin.

          Wodrin?

          Wie kommt das? Wie sollte ich (für non-cookie-user) ein Script ändern, wenn ich an die php.ini nicht drankomme?

          Hä? Was geht denn jetzt? Wenn Du cockies annimmst funkioniert es und wenn dann nicht oder was? Werden den die Session_ids an die Links angefügt oder nicht?
          Wenn Du im Script php.ini Variablen verändern willst, dann machst Du das mit
          http://www.php3.de/manual/de/function.ini-set.php, wie Du das anwendest steht darunter in den Kommentaren. Der Wert der Dich dies bezüglich interessieren sollte ist "session.use_trans_sid".
          Wobei da wie ich gerade sehe bei steht, das sich das nur per php.ini, .htaccess or httpd.conf verändern läßt, also sieht es schlecht aus, .htaccess funktioniert nur in der Modul-Version, bei mir funktioniert es mit einer eigenen php.ini im selben Verzeichnis, aber damit überschreibst Du auch alle anderen Einstellungen!

          Grüße
          Andreas

          1. Hallo,

            Wenn Du im Script php.ini Variablen verändern willst, dann machst Du das mit
            http://www.php3.de/manual/de/function.ini-set.php,

            Das ist aber nur Script-temporär. Das bedeutet, dass man diese Änderung in jedem Script durchführen müsste. Andreas hat zwar nichts gegenteiliges geschreiben, aber ich fand, es bedurfte der Klarstellung.

            Diese Einstellung kann man auch nicht im Script ändern, sondern nur über das INI-System oder über .htaccess oder über die VirtHosts in der httpd.conf

            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.
            1. Ah!
              Wieder was gelernt.
              Dankschö!