PHP SessionID Frage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP SessionID Frage

    Hallo wiedermal

    Einfache (vlt. noob-) Frage:
    Gibt es eine Möglichkeit, dass wenn ein Benutzer eine Seite mehrere Male aufruft, er verschiedene SessionIDs bekommt und diese auch unterschieden werden können?

    Bei mir ist in so ner Situation bis jetzt ein riesen Durcheinander, da die alte Session überschrieben wird...

    Soll ich neue Sessions sperren, falls eine vorhanden ist, und bei Logout diese destroyen?
    Dieses Problem soll ja nimmer bestehen, wenn man den Explorer ein zweites Mal (neu) öffnet...

    Danke im Voraus für die Antworten

    MfG
    Onyx
    Zuletzt geändert von Onyxagargaryll; 23.05.2008, 12:13.

  • #2
    Was ist genau das Problem, daß die Sessions überschrieben werden oder willst du genau das erreichen?

    Kommentar


    • #3
      Dass der User meine Seite mehrere Male offen haben kann.
      Er soll trotzdem "eindeutig" sein bzw. nicht überschrieben werden

      Und nach Möglichkeit will ich Cookies vermeiden...

      Kommentar


      • #4
        Soll der User mehrere SessionIDs haben oder nur eine?

        Kommentar


        • #5
          mehrere, sonst wäre ja die "Mehrfachbenutzung" der Seite nicht gewährleistet. Also er soll sich mit verschiedenen Accounts einloggen können.

          Kommentar


          • #6
            Hm, das ist gar nicht so einfach! Du müßtest wahrscheinlich mit SessionIDs ausschließlich im Parameter-String arbeiten und Cookies für Sessions verbieten, und dann die Session-ID jeweils zwangsweise neu setzen... Aber vielleicht hat jemand damit konkrete Erfahrung.

            Kommentar


            • #7
              Vielleicht muss ich doch Cookies verwenden...
              So wie dus beschreibst kann ich die Session ja gleich lassen, weil er sie dann immer wieder überschreibt... wäre ja sinnlos...

              Vielleicht 'nen eigenen hash aus der IP und der Time generieren.. oder ich speicher die Zeit in der Session... 'n array in der Session ($_SESSION['time']['wert']) oder so was in der Art.

              Gibt es irgendetwas wie einen unterschiedlichen "Wert" für einzelne Fenster im Browser, o.ä.?

              Gruss
              Onyx

              Kommentar


              • #8
                du meinst .. das ein user sich einmal anmeldet .. und dann an verschiedenen "orten" gleichzeitigt ist?? .. z.b. einmal im forum, einmal im chat???
                Gruß
                Uzu

                private Homepage

                Kommentar


                • #9
                  jein, sowas in der Art.

                  Bei mir ist es so, dass sich der User 1 mal anmeldet. Danach bleibt er immer auf dieser Seite und waltet und schaltet per AJAX.
                  Die Session brauchte ich einfach um z.B. seine UserID zu speichern, aber wenn er sich gleichzeitig mit einem anderen Account einloggt, führt der erste UND der zweite Aktionen für den zweiten Account aus - das will ich vermeiden.

                  Und ich glaube, dass mein Vorsatz, keine Cookies zu verwenden, den Bach runter geht

                  Versteht ihr was ich meine?


                  MfG
                  Onyx

                  Kommentar


                  • #10
                    also, mir ist bis jetzt aufgefallen

                    wenn ich eine webseite mit meinem FF besuche, mich anmelde und dann mit einem 2. FF auf die seite gehe .. das ich dort schon angemeldet bin. melde ich mich ab .. bin ich das in beiden browsern.

                    nehme ich aber als 2. browser dann den IE .. dann habe ich erneut die möglichkeit mich anzumelden .. und dann wird auch jeder browser einzelt behandelt.

                    gruß
                    uzu
                    Gruß
                    Uzu

                    private Homepage

                    Kommentar


                    • #11
                      Wäre ne gute Alternative.. nochmal anmelden kann ich ihn nicht... aber sowas in der Art "Sie sind bereits angemeldet" o.ä.

                      Aber wie soll ich 'n Session_destroy machen, wenn er die Seite ohne "Logout" verwendet? Ich wüsst grad nicht, wie ich ihm wieder erlauben könnte, einzuloggen...
                      Muss ich 'n Listener/Observer basteln? Oder per Cookie? Könnte darin time speichern, so dass er sich nach der Minute wieder einloggen könnte o.ä...

                      Kommentar


                      • #12
                        Und ich glaube, dass mein Vorsatz, keine Cookies zu verwenden, den Bach runter geht
                        Wenn du 2 Sessions mit einem Browser auf einer Applikation ausführen möchtest, ist es am einfachsten, auf Cookies zu verzichten und Session.trans_sid zu benutzen.

                        Mit Cokkies ist es deutlich komplizierter, die einzelnen Sessions auseinander zu halten!

                        Hier mal ein (hässliches) Beispiel aus meiner Wühlkiste:
                        PHP-Code:
                        <?php
                        error_reporting
                        (E_ALL);
                        ini_set('display_errors'TRUE);

                        function 
                        new_index(&$array)
                        {
                          do
                          {
                            
                        $index mt_rand();
                          }while(isset(
                        $array[$index]));
                          return 
                        $index;
                        }

                        $session_prefix 'mysid';
                        $session_index = isset($_REQUEST['session_index'])?(int)$_REQUEST['session_index']:0;
                        $aktive_sessions= array();
                        foreach(
                        $_COOKIE as $name => $sid)
                        {
                          
                        $zerlegtes=explode('_',$name);
                          if(
                        === count($zerlegtes))
                          {
                            list(
                        $prefix,$index)=$zerlegtes;
                            if(
                        $session_prefix == $prefix)
                              
                        $aktive_sessions[$index] = $sid;
                          }
                        }

                        if(!empty(
                        $_REQUEST['newsession'])) $session_index new_index($aktive_sessions);

                        session_name($session_prefix.'_'.$session_index);
                        session_start();
                        output_add_rewrite_var('session_index',$session_index);

                        if(!empty(
                        $_REQUEST['show_source']))
                        {
                          
                        highlight_file(__FILE__);
                          exit;
                        }


                         
                        ?>






                        <html>
                        <head>
                        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
                        <title>MultiHead</title>
                        </head>
                        <body>
                        <?php
                         
                        echo session_id().'<br>';
                         echo 
                        session_name().'<br>';
                         echo 
                        var_export($_COOKIE).'<br>';
                        ?>
                        <a href="<?php echo $_SERVER['SCRIPT_NAME']?>?newsession=jawoll" target="_blank">
                        Im neuen Fenster mit neuer SID oeffnen</a><br>
                        <a href="<?php echo $_SERVER['SCRIPT_NAME']?>">
                        reload mit alter SID</a><br>
                        <a href="<?php echo $_SERVER['SCRIPT_NAME']?>?show_source=jawoll">
                        Zeige Quellcode</a><br>
                        <form name="form1"  
                          enctype="multipart/form-data" 
                          method="post" 
                          action="<?php echo $_SERVER['SCRIPT_NAME']?>">
                          <input type="text" name="file1" >
                          <br />
                          <input type="submit" name="submit" value="Senden" >
                        </form>
                        <br />

                        </body>
                        </html>
                        Zuletzt geändert von combie; 23.05.2008, 13:56.
                        Wir werden alle sterben

                        Kommentar


                        • #13
                          Hmm klingt wirklich interessant. Leider ein wenig ungeeignet für mich, da ich nur eine userID in der Session speichern muss (drum erachte ich deinen Script als "zu ausführlich" für meine Seite).

                          Hab mir aber den Script für spätere Verwendung kopiert, danke dir! (werd ihn aber noch ein wenig umschreiben ^^)

                          Aber das System an sich könnt ich ja verwenden. Ich schiebe durch Requests diese ID von Seite zu Seite vor mich hin Macht es zwar verwundbar gegenüber XSS... aber ich kann ja noch 'n hash mitgeben.

                          Also, ich glaub ich habe meine Lösung gefunden.

                          Danke euch allen!!

                          Gruss
                          Onyx

                          Kommentar


                          • #14
                            Ich schiebe durch Requests diese ID von Seite zu Seite vor mich hin
                            Und warum schreibst du diese ID nicht in eine Session Variable?
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar


                            • #15
                              Original geschrieben von jahlives
                              Und warum schreibst du diese ID nicht in eine Session Variable?
                              Weil diese ID erst entscheidet, welche Session für DIESES Fenster gestartet werden soll.
                              Ein Henne-Ei Problem.
                              Wir werden alle sterben

                              Kommentar

                              Lädt...
                              X