Jump to content
WIK

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

Recommended Posts

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

  • Moderators

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
Link to comment
Share on other sites

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?

Link to comment
Share on other sites

  • Moderators

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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...