Autor Zpráva
Josef Tlapač
Profil *
Ahoj vsem,

proc mi tohle nevraci 10 nahodnych znaku? co je tam spatne?

$heslo = substr('0123456789ABCDEFGHIJKLMNOPRSTUVWXYZabcdefghijklmnoprstuvwxyz', rand(0,15), 10);


dekuji
keeehi
Profil
no špatně by tam nemělo být nic, až na to že:
1) nevrátí to náhodné znaky ale řadu
2) malá písmena se tam nikdy nezobrazí,protoře se k nim to nikdy nedostane

=> takže co třeba:
$heslo = substr(md5(microtime()),0,10);
Josef Tlapač
Profil *
a ty velka pismena?
keeehi
Profil
Josef Tlapač
jsou až tak moc důležitá?
JanJanuska
Profil
Josef Tlapač
nevracia, pretože substr pracuje tak, že z daného reťazca vyberie len určitý za sebou idúci počet znakov --> substr($retazec, $zaciatok, $pocet_znakov);
$heslo = substr('0123456789ABCDEFGHIJKLMNOPRSTUVWXYZabcdefghijklmnoprstuvwxyz', rand(0,15), 10); 

Takže dajme tomu, že rand(0,15) bude číslo 5. Prejdeme v reťazci po šiesty znak (indexuje sa od 0) a vypíše sa 10 znakov, tj. 56789ABCDE

Ak chcete vygenerovať náhodné heslo týmto (podobným) spôsobom, dá sa to napr. takto:

$retazec = '0123456789ABCDEFGHIJKLMNOPRSTUVWXYZabcdefghijklmnoprstuvwxyz';
   $heslo = '';
   $dlzka_hesla = 10;
   for ($i = 0; $i < $dlzka_hesla; $i++ ){ 
      $heslo .= substr($retazec, rand(0,strlen($retazec)), 1);  //vyberie sa náhodný znak z reťazca...    strlen($retazec) zistí dĺžku reťazca
   }
   echo $heslo;

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: