Hi I have this function and it returning a notice:
Notice: Uninitialized string offset
function generaterandomkey($length) {
$string=\'\'
You are occasionally overrunning $characters
because of strlen($characters)
, which should be strlen($characters) - 1
. Your random range should begin with zero, and you need to end with the length minus one. If the length of $characters
is 10, then the last zero-based array index is nine, and that becomes your upper bound for random selection.
$string='';
$characters = "0123456789abcdef";
for ($p = 0; $p < $length ; $p++) {
$string .= $characters[mt_rand(0, strlen($characters) - 1)];
}
Because you are choosing randomly, you wouldn't always receive the notice -- it would only occur if mt_rand()
returned its maximum value at some point in your loop.