如果在页面加载时创建具有随机值的会话怎么办。例如
$_SESSION['name_for_email'] = 'something_random';
然后输入字段
<input type="text"
name="<?php echo htmlspecialchars( $_SESSION['name_for_email'], ENT_QUOTES, "UTF-8");?>"
>
使用ajax似乎更好。访问者点击发送,将所有数据传递给外部 php,在外部 php 调用$_SESSION['name_for_email']
中,可以知道邮件字段名称。
如果没有 ajax,则发布和页面重新加载,但在页面顶部新$_SESSION['name_for_email']
创建。所以处理输入表单的php代码必须在定义之前$_SESSION['name_for_email']
如果输入字段很多,则必须使用很多会话。可能会更好一些简化版本。
$_SESSION['name_for_email'] = 'something_random';
<input type="text"
name="field1<?php echo htmlspecialchars( $_SESSION['name_for_email'], ENT_QUOTES, "UTF-8");?>"
>
只需要记住,那field1
是电子邮件,field2
姓名等。
但是……再想想。主要问题是 bot 要么没有,$_SESSION['name_for_email']
要么对于 bot 值不正确。好的,机器人“看到”电子邮件,“类型”电子邮件。
$_SESSION['name_for_email']
如果在处理输入之前定义一些隐藏字段,检查是否$_SESSION['name_for_email']
与隐藏输入字段中的相同,我想会产生相同的效果。因为,如果机器人知道正确的随机值,那么输入字段名称也是正确的。