Jump to content
WIK

[PHP] Generare numar 16 caractere in care sa includa litere mari / mici si cifre

Recommended Posts

Posted (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 by WIK
Posted
<?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. :D 

  • Thanks 1
Posted (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. :D 

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 by WIK
Posted
<?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";

?>

 

  • Thanks 1
  • Upvote 1
  • Moderators
Posted

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.

  • Thanks 1
  • Upvote 1
Posted
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?

  • Moderators
Posted

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);
?>

 

  • Thanks 1
  • Upvote 1
Posted (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 by lzomedia
added the code
  • Thanks 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...