- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这只是获取随机数。然后将 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/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!