隐藏输入(html表单确认)-服务器端脚本?(php)



我正在用PHP编写一个网站。我有一个简单的登记表。

<form>
<label...></label> <input .../>
</form>

我想添加一个确认字段:

<input type='hidden' name='hiddeninput' value="jn3kjnv3kjvn35">

但是这个代码在服务器端看起来怎么样?每当加载注册表时,我是否需要将每个隐藏值保存到数据库中?

我正在努力确保表格没有被机器人填写。

这就是为什么我需要一个随机的隐藏值,它对于每个表单提交都是唯一的。

假设每次我生成注册页面时,我都会生成"隐藏"字段的唯一值。

当用户提交表单时,我如何将提交的值与生成的值进行比较(就像生成后一样,它不会存储在网站的任何地方)。

Basicly,您应该使用一个生成随机字符串的函数(例如hash)和CCD_ 2来"记住"这个字符串。提交表单后,您将检查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");

您还需要为字段添加一个名称。它的工作原理与其他任何HTML字段类似。

我现在使用Ruby on Rails框架来开箱即用地解决它。

最新更新