Autor Zpráva
DoubleThink
Profil *
Jak mám jednoduše (60 řádkový script jsem schopen sesmolit sám) vygenerovat náhodný řetězec, který sestává z čísel a malých/velkých znaků (Latin1)?

MD5 hash nepřipadá v úvahu (není to text, ale hexa-číslo)
DoubleThink
Profil *
No teď mě napadá si vygenerovat dostatečně velké číslo a pomocí base_convert() ho převést na 36kové.
blast3r
Profil
// Pokud nesmí tvořit náhodné číslo nějaké znaky, smažte je (pokud zde jsou) z následujícího řádku.
$moznosti= array("1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g", "h","i","j","k","l","m","n","p","q","r","s","t","u","v","w","x","y","z ");
//Počet míst náhodného hesla
$mista="6";

$heslo="";

for ($i=0 ;$i<=$mista-1 ;$i++)
{
$nahoda=rand(0, count($moznosti)-1);
$heslo.=$moznosti[$nahoda];
}
blast3r
thingwath
Profil
Hm, no... nevím, co třeba tohle?

$pismena = "abcdefghijklmnopqrstuvwxyz";
$retezec = "";
for ($i = 0; $i < 60; $i++) {
$retezec = $retezec.$pismena[rand (0,24)];
}

Ani si ale nejsem jistý, jestli je to syntakticky vůbec správně, natož jestli to funguje :-) Jde o myšlenku.
thingwath
Profil
blast3r
Jsem si nebyl jistý, tak jsem se na rand koukal do manuálu a mezitím mě tu předběhli, hrůza :-)
Anonymní
Profil *
Pokud nechceš, aby to bylo hezky vyslovitelné, tak já bych to udělal takhle:

$znaky = array_merge (range ('a', 'z'), range ('A', 'Z'), range (0, 9));

$delka = 10;
for ($i = 0; $i < $delka - 1; $i++) {
$heslo .= $znaky[rand(0, (count ($znaky) - 1))];
}
DoubleThink
Profil *
$moznosti= array("1","2","3","4","5","6","7","8","9","a"

Tomuto jsem se právě chtěl vyhnout - poli se znaky.
Asi použiju 36kové náhodné číslo.

> blast3r

Hmm - jazykový konstrukt "blast3r" neznám - ten dělá co? ;)
DoubleThink
Profil *
Anonymní

To už je snesitelnější
HubiPe
Profil *

$pismena = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; // možná písmena
$str = ''; // inicializujeme řetězec
$pismen = 10; // deset písmen bude na konci procesu náhodně vybráno
SRand((double)MicroTime()*1e6)); // inicializice - náhodný generátor

for($i=0;$i<$pismen;$i++):
$rand = Rand(0, StrLen($pismena)-1); // vybereme náhodné pořadí znaku
$str .= SubStr($pismena, $rand, 1); // přidáme znak na $rand pozici
endfor;

// teď máme v řetězci $str uloženo náhodných $pismen písmen z řetězce $pismena
HubiPe
Profil *
Je to vcelku skloubení příkladů uvedených vejš.

Mimochodem, proč používáte:

for($i=0;$i <= $celkem-1;$i++):


Když stačí:

for($i=0;$i < $celkem;$i++):


Dosáhnete stejného výsledku! Ale to jen tak na okraj...
krteczek
Profil
taky přispěji svou troškou,není tak elegantní jako tyhle ale je má vlastní :-)

$delka_hesla=rand(6,8);
$pristupove_heslo='';
for ($a=0;$a<$delka_hesla;$a++)
{
$znak1=chr(rand(48,57));
if ($znak1==(chr(49)))
{
$znak1=chr(52);
}
$znak2=chr(rand(65,90));
if ($znak2==(chr(73)))
{
$znak2=chr(75);
}
$znak3=chr(rand(97,122));
if ($znak3==(chr(108)))
{
$znak3=chr(109);
}
$vyber=rand(1,3);
if ($vyber==1)
{
$pristupove_heslo.=$znak1;
}
if ($vyber==2)
{
$pristupove_heslo.=$znak2;
}
if ($vyber==3)
{
$pristupove_heslo.=$znak3;
}
}
$heslo=$pristupove_heslo;

krteczek
Toto téma je uzamčeno. Odpověď nelze zaslat.

0