Wednesday, 30 August 2017

PHP random string generator



I'm trying to create a randomized string in PHP, and I get absolutely no output with this:



    function RandomString()
{

$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randstring = '';
for ($i = 0; $i < 10; $i++) {
$randstring = $characters[rand(0, strlen($characters))];
}
return $randstring;
}

RandomString();
echo $randstring;



What am I doing wrong?


Answer



To answer this question specifically, two problems:




  1. $randstring is not in scope when you echo it.

  2. The characters are not getting concatenated together in the loop.




Here's a code snippet with the corrections:



function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}

return $randomString;
}


Output the random string with the call below:



// Echo the random string.
// Optionally, you can give it a desired string length.
echo generateRandomString();




Please note that this generates predictable random strings. If you want to create secure tokens, see this answer.



No comments:

Post a Comment

casting - Why wasn&#39;t Tobey Maguire in The Amazing Spider-Man? - Movies &amp; TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...