我正在尝试将隐形CAPTCHA合并到我的联系表单中,但我不确定它是否有效。
我的代码如下......
HTML
<span class="test-field"><label for="test">Please leave blank</label>
<input type="text" name="test" id="test"/></span>
CSS
.test-field {Display: none}
PHP
<?php
if($_POST["test"]!=""){
header("Location: {$_SERVER[HTTP_REFERER]}");exit;
}
// Get Data
$f_name = strip_tags($_POST['f_name']);
$f_email = strip_tags($_POST['f_email']);
$f_message = strip_tags($_POST['f_msg']);
// Send Message
mail( "me@website.com", "Website Contact",
"Name: $f_name\nEmail: $f_email\nMessage: $f_message\n",
"From: My Website" );
?>
为了测试它,我做了一些改变......的测试。
f($_POST["test"]!="")
...到...
f($_POST["test"]="")
我的PHP不是很好,但我猜这不应该发送表单,如果该字段是空白的,但它确实通过。我的PHP有什么问题吗?
提前致谢。
答案 0 :(得分:2)
就你的具体问题而言,它没有任何意义。如果用户CAPTCHA被隐藏,则绝对没用。
CAPTCHA一词代表......
完全自动公开图灵测试,以告诉计算机和人类
注意它说人类......
如果他们无法看到CAPTCHA挑战,我们如何测试人类互动?你不能。从来没有......这里是你的代码的快速模拟......我遗漏的CAPTCHA,因为它毫无意义。从这里开始......
<?php
if ($_POST['test'] == "") {
header("Location: {$_SERVER['HTTP_REFERER']}");
} else {
// Get Data
$f_name = strip_tags($_POST['f_name']);
$f_email = strip_tags($_POST['f_email']);
$f_message = strip_tags($_POST['f_msg']);
}
?>
<html>
<head>
<style type="text/css">
#demo {
width: 250px;
height: 250px;
}
.test-field {
display: none;
width: 200px;
height: 200px;
}
#form label {
width: 50px;
float: left;
}
#form input {
width: 150px;
float: right;
}
</style>
</head>
<body>
<div id="demo">
<form name="form" id="form" action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
<label for="test">Empty </label><input type="text" name="test" id="test"/><br/>
<label for="f_name">Name</label><input type="text" name="f_name" id="f_name"/><br/>
<label for="f_email">Email</label><input type="text" name="f_email" id="f_email"/><br/>
<label for="f_msg">Message</label><textarea rows="15" cols="30" name="f_msg" id="f_msg"></textarea>
<input type="submit" id="submit">
<div class="test-field"></div>
</form>
</div>
</body>
</html>
<?php var_dump($_POST) ?>
答案 1 :(得分:1)
尝试更改
if($_POST["test"]!=""){
到
if(isset($_POST["test"]) && $_POST["test"]){