我正在尝试生成一个随机字符串,并将其插入一个数据库中,向用户显示相同的随机字符串。但是,每次使用包含随机字符串的变量时,其值都会更改为新的随机字符串。结果,用户看到的随机字符串与插入数据库的字符串不同。
这是我的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;
或者它取决于你使用的操作方式,比如会话,但我认为使用会话不是一个好主意,除非你在使用后销毁它。