PHP:每次使用相同的变量时,都会生成不同的随机字符串


PHP: A different random string is generated every time I use the same variable

我正在尝试生成一个随机字符串,并将其插入一个数据库中,向用户显示相同的随机字符串。但是,每次使用包含随机字符串的变量时,其值都会更改为新的随机字符串。结果,用户看到的随机字符串与插入数据库的字符串不同。

这是我的PHP代码的顶部:

$token = GenerateRandomString();

当用户提交表单时会发生这种情况:

$query = "INSERT INTO mytable (token) VALUES ('{$token}')";
$result = mysqli_query($connection, $query);

这就是我向用户显示生成的随机字符串的方式:

<input type="hidden" name="mytoken" id="mytoken" value="<?php echo $token; ?>" />

这是用于生成随机字符串的函数:

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

在表单提交到的页面上:

$query = "INSERT INTO mytable (token) VALUES ('{$token}')";

$token应该是$_GET['token']$_POST['token'],具体取决于您的表单。在将其放入数据库之前,不要忘记对其进行消毒

我想您没有使用全局变量。如果使用全局变量,则变量的值将与以前相同。


$GLOBALS['token'] = $token;

或者它取决于你使用的操作方式,比如会话,但我认为使用会话不是一个好主意,除非你在使用后销毁它。