WIK Posted January 29, 2021 Report Posted January 29, 2021 (edited) Cine ma poate ajuta cu un cod care sa genereze un string de 16 caractere care sa contina cifre / litere mari / litere mici sa mai apoi sa le stocheze intr-un fisier .txt Am incercat o tentativa dar de aici ma blochez. Vreau ca sa pot selecta eu cate coduri sa genereze ex: sa genereze 5 coduri diferite sau 10 , 20 , 30 etcc function generator($marime = 16) { $chestii_random=""; while(strlen($chestii_random)<$marime && $marime > 0) { $numere_random = mt_rand(0,10); $chestii_random .= ($numere_random < 10) ? chr($numere_random+48) : ($numere_random < 36 ? chr($numere_random+55) : $numere_random+10); } return $chestii_random; } ma poate ajuta cu acest mic cod ? Edited January 29, 2021 by WIK Quote
Nytro Posted January 29, 2021 Report Posted January 29, 2021 <?php //Enter your code here, enjoy! $a = str_split("1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"); shuffle ($a); $r = implode($a); $f = substr($r,0,16); print $f; ?> Facut rapid, sunt multe alte metode. PS: Nu e cryptographically secure. 1 Quote
WIK Posted January 30, 2021 Author Report Posted January 30, 2021 (edited) 44 minutes ago, Nytro said: <?php //Enter your code here, enjoy! $a = str_split("1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"); shuffle ($a); $r = implode($a); $f = substr($r,0,16); print $f; ?> Facut rapid, sunt multe alte metode. PS: Nu e cryptographically secure. si nu ai idee cum sa fac sa pun scriptu sa genereze mai multe coduri ex sa genereze 10 coduri deodata, nu doar 1 si sa aleg eu cate sa genereze deodata Edited January 30, 2021 by WIK Quote
Nytro Posted January 30, 2021 Report Posted January 30, 2021 <?php function getRandom() { $a = str_split("1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"); shuffle ($a); $r = implode($a); $f = substr($r,0,16); return $f; } for($i = 0; $i < 10; $i++) print getRandom() . "\r\n"; ?> 1 1 Quote
Moderators Dragos Posted January 30, 2021 Moderators Report Posted January 30, 2021 Daca vrei sa ai un formular in care sa selectezi valorile + string-uri de orice lungime <form action="" method="post"> Cate coduri sa genereze: <input type="text" name="cate"><br /> Lungime coduri: <input type="text" name="lungime"><br /><br /> <input type="submit" value="Genereaza"> </form> <br /><br /> <?php function getRandom($lungime) { $a = str_split("1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"); $str = ""; for($i=0; $i< $lungime; $i++) $str .= $a[rand(0,count($a)-1)]; return $str; } function generateStrings($lungime, $cate){ $str = []; for($i=0;$i<$cate;$i++) $str[] = getRandom($lungime); return $str; } if(isset($_POST)) foreach(generateStrings($_POST['lungime'], $_POST['cate']) as $string) echo $string . "<br />"; ?> Ca sa le pui intr-un fisier, deschizi un file handler, apelezi generateStrings() care iti returneaza un array, treci prin fiecare element din array si le pui in fisier. Gasesti aici o explicatie destul de ok cu tot cu exemple. 1 1 Quote
WIK Posted January 30, 2021 Author Report Posted January 30, 2021 4 hours ago, Dragos said: Daca vrei sa ai un formular in care sa selectezi valorile + string-uri de orice lungime <form action="" method="post"> Cate coduri sa genereze: <input type="text" name="cate"><br /> Lungime coduri: <input type="text" name="lungime"><br /><br /> <input type="submit" value="Genereaza"> </form> <br /><br /> <?php function getRandom($lungime) { $a = str_split("1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"); $str = ""; for($i=0; $i< $lungime; $i++) $str .= $a[rand(0,count($a)-1)]; return $str; } function generateStrings($lungime, $cate){ $str = []; for($i=0;$i<$cate;$i++) $str[] = getRandom($lungime); return $str; } if(isset($_POST)) foreach(generateStrings($_POST['lungime'], $_POST['cate']) as $string) echo $string . "<br />"; ?> Ca sa le pui intr-un fisier, deschizi un file handler, apelezi generateStrings() care iti returneaza un array, treci prin fiecare element din array si le pui in fisier. Gasesti aici o explicatie destul de ok cu tot cu exemple. Am incercat cum ai spus tu, oarecu am reusit ! m-am folosit de functia file_put_contents si imi scoate tot array-ul , doar ca le scoate legate (tot siru e legat nu exista cv sa separe in randuri de cate 16 caractere file_put_contents($file,generateStrings($numar, $_POST['cate'])); le scoate pe toate intr-un singur sir, poate fi din cauza ca in loc de $_POST['lungime'] am folsit o variabila cu valoarea? sau trebuia sa mai fac ceva ce nu am facut? Quote
Moderators Dragos Posted January 30, 2021 Moderators Report Posted January 30, 2021 generateStrings() returneaza un sir, nu un string. Sirul respectiv trebuie parsat ca sa-l poti adauga corect in fisier: foreach(generateStrings($_POST['lungime'], $_POST['cate']) as $string) { file_put_contents("a.txt", $string . "\r\n", FILE_APPEND); } foreach ia fiecare element din sir si il trateaza separat ca variabila $string al doilea parametru din file_put_contents, $string . "\r\n", pune stringul in fisier si la sfarsit ii adauga delimitatorul pentru rand nou pentru Windows (pe Linux ar fi doar "\n") al treilea parametru din file_put_contents, FILE_APPEND, e un flag care sa zica sa adauge in continuarea fisierului si sa nu stearga continutul anterior Tot codul pentru referinta <form action="" method="post"> Cate coduri sa genereze: <input type="text" name="cate"><br /> Lungime coduri: <input type="text" name="lungime"><br /><br /> <input type="submit" value="Genereaza"> </form> <br /><br /> <?php function getRandom($lungime) { $a = str_split("1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"); $str = ""; for($i=0; $i<(int) $lungime; $i++) $str .= $a[rand(0,count($a)-1)]; return $str; } function generateStrings($lungime, $cate){ $str = []; for($i=0;$i<$cate;$i++) $str[] = getRandom($lungime, $cate); return $str; } if(isset($_POST)) foreach(generateStrings($_POST['lungime'], $_POST['cate']) as $string) file_put_contents("a.txt", $string . "\r\n", FILE_APPEND); ?> 1 1 Quote
Wav3 Posted January 30, 2021 Report Posted January 30, 2021 Dragos, nu prea-ti plac acoladele, nu? 1 Quote
UnixDevel Posted January 30, 2021 Report Posted January 30, 2021 (edited) trage in php packetul de la iluminate/support https://stillat.com/blog/2017/12/06/laravel-5-string-helpers-generating-random-strings composer require illuminate/support <form action="" method="post"> Cate coduri sa genereze: <input type="text" name="cate"><br /> Lungime coduri: <input type="text" name="lungime"><br /><br /> <input type="submit" value="Genereaza"> </form> <br /><br /> <?php require "vendor/autoload.php"; use Illuminate\Support\Str; $data = ""; for($i=0; $i <= $_POST['cate']; $i++){ $data .= Str::random($_POST['lungime']). ','; } $file = file_put_contents('coduri.txt', $data); Edited January 30, 2021 by lzomedia added the code 1 Quote
WIK Posted January 30, 2021 Author Report Posted January 30, 2021 merci mult de tot, am reusit intr-un sfarsit in mare parte cu ajutorul vostru ! Quote