我正在用 PHP 编写网站。 我有一个简单的注册表。
<form>
<label...></label> <input .../>
</form>
我想添加一个确认字段:
<input type='hidden' name='hiddeninput' value="jn3kjnv3kjvn35">
但是这段代码在服务器端看起来如何呢? 每当加载注册表单时,我是否需要将每个隐藏值保存到数据库中?
我正在努力确保表格不是由机器人填写的。
这就是为什么我需要一个对于每个表单提交都是唯一的随机隐藏值。
假设每次我生成注册页面 - 我为“隐藏”字段生成唯一值。
当用户提交表单时 - 我如何将提交的值与生成的值进行比较(一旦生成 - 它不会存储在网站的任何地方)。
最佳答案
基本上,您应该使用生成随机字符串的函数(例如hash
)
和 sessions
来“记住”这个字符串。
提交表单后,您将检查 INPUT 的值并将其与 SESSION 的值交叉。
例如:
Form.php
<?php
$hash = md5(time());
$_SESSION['form_xx'] = $hash; //in case you have more than one form.
?>
<form method='post' action='do.php'>
..
..
<input type='hidden' name='secret_key' value='<?=$hash?>'>
</form>
do.php
if($_POST['secret_key'] == $_SESSION['form_xx']) //Just make sure your making the posted value SAFE
//He's ok.
else
die("arggg...those hackers");
关于php - 隐藏输入(html 表单确认)- 服务器端脚本? (php),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9640873/