julezz: uniqid() in javascript?

hallo,

Wie schaffe ich es mit Javascript, eine unique id zu generieren. Bis jetzt habe ich es so versucht:

Math.floor(Math.random()*10000);

Gibt es da noch andere Möglichkeiten?

lg,
julezz

  1. Hello out there!

    Wie schaffe ich es mit Javascript, eine unique id zu generieren.

    Eine? Dann tut’s doch "1". Oder mehrere?

    Bis jetzt habe ich es so versucht
    Math.floor(Math.random()*10000);

    Die Wahrscheinlichkeit, damit zweimal dieselbe zu erhalten, ist zwar gering, aber nicht 0. Von „unique“ kann keine Rede sein.

    Gibt es da noch andere Möglichkeiten?

    <http://de.selfhtml.org/javascript/objekte/date.htm#get_time@title=Den Zeitstempel.>

    See ya up the road,
    Gunnar

    --
    „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
    1. Danke Gunnar,
      eigentlich ziemlich logisch...

      Aber ich habe da gleich noch eine Frage und weiß nicht soll ich dafür eine neue Nachricht schreiben?

      Ich versuche mich gerade in Ajax und benutze dabei Javascript und PHP.
      Wie funktioniert da das Session Handling? Bzw. was ist da sinnvoll? Eine Session mit PHP aufbauen oder alles über ein Cookie von JS regeln?
      Gibt es da einen hilfreichen Link?
      Bin für jede Hilfe dankbar.

      lg,
      julezz

      1. hi,

        Ich versuche mich gerade in Ajax und benutze dabei Javascript und PHP.
        Wie funktioniert da das Session Handling?

        So, wie sonst auch.

        Du hast Client und Server, die über HTTP kommunizieren - wobei Server Client über ein bestimmtes Token "wiedererkennt", bzw. mehrere unabhängige Abfragen ihm zuordnen kann.

        Bzw. was ist da sinnvoll? Eine Session mit PHP aufbauen oder alles über ein Cookie von JS regeln?

        Das kommt u.a. darauf an, ob du Sessioninhalte server- oder clientseitig vorhalten willst.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hallo nochmal,

          Das kommt u.a. darauf an, ob du Sessioninhalte server- oder clientseitig vorhalten willst.

          Also, eigentlich brauche ich clientseitig nur einen Cookie in dem eine eindeutige userid steht, und den Rest bräuchte ich eigentlich serverseitig (dann also eine php-session). Ich versteh' aber noch nicht so ganz wie das im Zusammenspiel funktionieren soll. Hätte da jemand vielleicht ein kleines Beispiel?

          danke und lg,
          julezz

          1. hi,

            Also, eigentlich brauche ich clientseitig nur einen Cookie in dem eine eindeutige userid steht, und den Rest bräuchte ich eigentlich serverseitig (dann also eine php-session).

            Ja, die dürften tauglich sein.

            Ich versteh' aber noch nicht so ganz wie das im Zusammenspiel funktionieren soll. Hätte da jemand vielleicht ein kleines Beispiel?

            Hast du vielleicht eine konkrete Frage?

            Wie Sessions in PHP generell funktionieren, darüber hast du dich doch wohl bereits belesen?

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. hallo,

              Hast du vielleicht eine konkrete Frage?

              ok, ich versuch mal aufzuschreiben, wie ich mir das gerade noch vorstelle:
              ich habe in meiner Seite ein Javascript, das bei der ersten Anfrage eines users einen Cookie mit eindeutiger id setzt oder bei einem schon bekannten user das cookie ausliest. Dann sende ich mittels xmlhttp die userid zum server und starte dort in einer PHP-Datei eine Session.
              Wenn der User die zweite Seite anfragt, lese ich mit js wieder das cookie und sende an den Server und führe die Session weiter.
              Muß ich dann bei jedem Request die userid mitsenden?
              Setzte ich das Cookie vielleicht doch besser mit PHP?

              Funktioniert die Sache in etwa so wie ich sie mir vorstelle? Oder macht man das ganz anders?

              danke schonmal,
              lg,
              julezz

              1. hi,

                Muß ich dann bei jedem Request die userid mitsenden?

                Die Session-ID - ja.

                Setzte ich das Cookie vielleicht doch besser mit PHP?

                Was sollte daran "besser" sein?

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
                1. hallo,

                  Was sollte daran "besser" sein?

                  Hmm, keine Ahnung. ich dachte weil man ja die session dann auch mit PHP macht...aber ist wohl wurscht.

                  ich probier's jetzt mal aus.
                  danke nochmal.

                  lg,
                  julezz

              2. Hallo,

                ich habe in meiner Seite ein Javascript, das bei der ersten Anfrage eines users einen Cookie mit eindeutiger id setzt oder bei einem schon bekannten user das cookie ausliest. Dann sende ich mittels xmlhttp die userid zum server und starte dort in einer PHP-Datei eine Session.

                Warum startest du die Session nicht einfach Old-School auf dem Server bei der ersten regulären Anfrage (und setzt dann gewöhnlich über HTTP den Cookie)? Warum muss JavaScript eine zweite Anfrage ausführen?

                Wenn der User die zweite Seite anfragt, lese ich mit js wieder das cookie und sende an den Server und führe die Session weiter.

                Warum? Wenn der Cookie gesetzt ist, wird er auch bei der zweiten regulären Anfrage an den Server gesendet. Dort kann dann die Session fortgesetzt werden.

                Muß ich dann bei jedem Request die userid mitsenden?

                Macht der Browser automatisch, so funktionieren Cookies...

                Setzte ich das Cookie vielleicht doch besser mit PHP?

                Ja, wozu vier Anfragen (zwei reguläre, zwei mit XMLHTTP), wenn du doch nur eine simple Session machen willst, die auch mit zwei regulären ohne JavaScript realisiert werden kann?

                Mathias

          2. Hallo,

            Also, eigentlich brauche ich clientseitig nur einen Cookie in dem eine eindeutige userid steht, und den Rest bräuchte ich eigentlich serverseitig (dann also eine php-session). Ich versteh' aber noch nicht so ganz wie das im Zusammenspiel funktionieren soll. Hätte da jemand vielleicht ein kleines Beispiel?

            <?php  
            [code lang=php]error_reporting(E_ALL | E_STRICT);  
            ini_set('date.timezone', 'Europe/Berlin');  
              
            define('SESSION_NAME', 'sid');  
            ini_set('session.name', SESSION_NAME);  
            ini_set('session.use_only_cookies', true);  
              
            session_start();  
              
            if (isset($_GET['destroy'])) {  
             session_destroy();  
             // Lösche Cookie  
             setcookie(session_name(), '', 0);  
             echo('<p>Sitzung zerstört.</p>');  
             exit;  
            }  
              
            if (isset($_COOKIE[SESSION_NAME])) {  
             echo('<p>Session-ID: ' . session_id() . '</p>');  
             echo('<p>Gespeicherte Session-Daten:</p>');  
             echo('<pre>'); print_r($_SESSION); echo('</pre>');  
            } else {  
             echo('<p>Erzeuge neue Session, setze Session-Daten.</p>');  
             $_SESSION['Zeitpunkt des Startes der Session'] = date('c');  
             echo('<pre>'); print_r($_SESSION); echo('</pre>');  
            }  
            
            

            ?>
            <form action="">
            <p><input type="submit" name="destroy" value="Session zerstören"></p>
            </form>[/code]

            führt dazu, dass beim ersten Request eine Session-ID berechnet wird und als Cookie an den Browser gesendet wird. Akzeptiert der Browser Cookies, wird die Session-ID beim nächsten Request auf dasselbe Script wieder an den Server gesendet und das Script hat Zugriff auf die Session-Daten.

            Wo kommt da jetzt JavaScript ins Spiel...? Natürlich kannst du den per HTTP gesetzten Cookie auch per JavaScript über document.cookie abrufen, nur wozu - bei jedem Request (auch XMLHttpRequest) wird automatisch der Cookie mit der Session-ID an den Server übermittelt.

            Mathias