gpt4 book ai didi

javascript - 与 $_POST[] 相比,PHP 随机数生成器不起作用

转载 作者:可可西里 更新时间:2023-10-31 23:26:56 24 4
gpt4 key购买 nike

这只是获取随机数。然后将 int 转换为字符串。该字符串在 HTML 中使用。

$num1 = mt_rand(1, 9);
$num2 = mt_rand(1, 9);
$sum = $num1 + $num2;
$str1 = (string) $num1;
$str2 = (string) $num2;

这部分只是获取所有的POST信息和变量声明。

if (isset($_POST["submit"])) {
$name = $_POST['name'];
$email = $_POST['email'];

这些只是变量的声明。

    $message = $_POST['message'];
$human = intval($_POST['human']);
$from = 'STEM and Buds Contact Form';
$to = 'saifanchey@gmail.com';
$subject = $_POST['subject'];
$reason = $_POST['reason'];

这是代码中断的地方。它总是在正确时输出 Your anti-spam is incorrect。这是发生错误的地方。 $num1$num2 变量是我之前声明的两个随机值,当它们相加并且用户输入正确时,它应该(理论上)起作用。

<div class="form-group">
<label for="human" class="col-sm-2 control-label"><?php echo $str1 . " + " . $str2 . " = ?"; ?></label>
<div class="col-sm-10">
<input type="text" class="form-control" id="human" name="human" placeholder="Your Answer">
<?php echo "<p class='text-danger'>$errHuman</p>"; ?>
</div>
</div>

if ($human !== $num1 + $num2) {
$errHuman = 'Your anti-spam is incorrect';
}

最佳答案

每次用户发送带有正确human 值的表单时,服务器都会收到POST 请求并为$num1 生成新值和 $num2。这就是您的条件不起作用的原因。

您需要记住操作数并将它们与您显示给用户的值进行比较。

最简单的例子(无法抵御攻击):

所以,这就是你的 php 文件:

// init new random numbers
$num1New = mt_rand(1, 9);
$num2New = mt_rand(1, 9);

将隐藏值添加到您的 html 表单:

<input type="hidden" name="num1" value="<?php echo $num1New ?>">
<input type="hidden" name="num2" value="<?php echo $num2New ?>">

扩展接收变量:

$human = intval($_POST['human']);
$num1 = intval($_POST['num1']);
$num2 = intval($_POST['num2']);

在这种情况下,您将比较显示给用户的值。

另一种解决方案是将这对值存储在数据库或用户 session 或其他存储中。

关于javascript - 与 $_POST[] 相比,PHP 随机数生成器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55429311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com