möglichst komplexe Zufallssequenz

MrSandman666

Grünschnabel
Hallo zusammen!

Jetzt mal eine ganz einfache Frage: wie kann ich eine möglichst komplexe Zufallssequenz erzeugen? Das ganze dient dem Zweck, eingeloggte User zu verfolgen. Jeder eingeloggte User kriegt ne Sequenz zugewiesen, die wird in ner Datenbank gespeichert und dort auch wieder gelöscht, sobald der User sich wieder abmeldet oder ein Time Out erfolgt.
Jetzt sollte es so sein, dass, wenn man der Seite eine beliebige Sequenz füttert, die Chance verschwindend gering ist, auch eine existierende Sequenz zu treffen.

Ich hatte da an eine Sequenz der Marke 54Au876ThjI233z gedacht. Wie geht das? Wie kann ich einen String generieren, der so aussieht?

Ursprünglich habe ich es so versucht:
PHP:
for($x=0; $x < 10; $x++) 
   $id[$x] = chr(rand(0, 255));

echo $id;
Bei diesem Ansatz kriege ich vom Echo immer nur ein "Array" geliefert, und keinen String.
Wie macht man sowas? Kann doch nicht so schwer sein. Wahrscheinlich bin ich nur wieder zu blöd.

Danke schon mal...
 
Du meinst eine Session ID?
Die wird meistens aus der IP des Users, der Zeit (als Timestamp) und manchmal noch einer Zufallszahl zusammengesetzt.
 
Mann, wie blöd muss man sein!!!

Das war der Wink! "Zusammengesetzt"! Das hatte ich gebraucht. Nicht als Array, sondern Ziffer für Ziffer einen String bauen.

Hier ist der Code, falls es jemanden interessiert:
PHP:
for($x=0; $x < 10; $x++){ // create ID
   $temp = rand(0, 2);
                          
   if ($temp==0)
      $id .= rand(0, 9);
   elseif($temp==1)
      $id .= chr(rand(65,90));
   elseif($temp==2)
      $id .= chr(rand(97,122));
}

Das ganze kann man natürlich noch anpassen, was die Anzahl der Ziffern und das Verhältniss von Zahlen, Kleinbuchstaben und Großbuchstaben angeht.
Das sind 62 mögliche Werte pro Ziffer, bei zehn Ziffern macht das 839299365868340224 mögliche Kombinationen. Unwahrscheinlich, darin die paar IDs zu finden, die gleichzeitig online sind. Selbst wenn ein paar hundert IDs gleichzeitig aktiv sind. Mein Gott, ich weiss nicht mal, wie man die Zahl nennt! Was kommt eigentlich nach Billionen? Trillionen? Oder gibt es sowas wie Billiarde? Milliarde gibt's ja auch...
 
Hallo,
Um mal auf den Punkt zu kommen. Richtig ist, dass die ID von PHP erzeugt wird, allerdings kann man AUCH eine komplexe eigene ID die als "Name" übergeben wird erzeugen.

Wenn Du einen guten Zufallsgenerator haben willst, bediene dich des meinigen ;-)

Also hier die Antwort auf den "Zufallsgenerator"

$val = 10; // Länge des Zufallwertes
mt_srand((double)microtime()*1000000);
$random = mt_rand() % 1000 + 1; // Modulo-Operator (%) ermittelt Zufallszahl zwischen 0 und 1000
$random = trim(md5(uniqid($random)));
$random = strtolower(substr($random, 0, $val));

print("$random");

èt voila!

Diese Minifunktion ermittelt einen Zufallswert anhand der Startzeit, es wird ein Zufallswert zwischen 0-2 ausgewählt, dieser mit Mircotime und *10000000 errechnet. Auch wenn nun mehrere im Mikrosekundenbereich gleichzeitig daraufzugreifen ist der Wert ein anderer.

Ich hoffe geholfen zu haben...

Greetins
ExAByte
 
ich hab mir die anderen sachen nicht durchgelesen, nur falls nichts mehr hilft, könntest du mal hier schauen: PX: PHP Code Exchange...da ist irgendwo 'n französisches script, das die sache bestimmt (wie viele anderen von der site) auch ganz gut macht :)
 

Neue Beiträge

Zurück