【问题标题】:Invisible CAPTCHA not working, most likely incorrect PHP?不可见的验证码不起作用,很可能是错误的 PHP?
【发布时间】:2012-11-06 07:50:58
【问题描述】:

我正在尝试在我的联系表单中加入一个不可见的验证码,但我不确定它是否有效。

我的代码如下...

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 有什么问题吗?

提前致谢。

【问题讨论】:

  • 你能解释一下“不起作用”是什么意思吗?
  • 我真的不明白invisible 是什么意思如果它是不可见的,为什么你首先需要它,并且说它不起作用,你的意思是你出现错误或其他问题?
  • 对不起,我重新编辑了我的帖子以使其更清晰
  • @Adam 请幽默一下,你为什么想要一个“隐形”验证码?您是指将在用户操作中重新出现的“隐藏”验证码吗?
  • 是隐藏的验证码。我只是在检查我是否有正确的代码。如果该字段不为空,则上述表格将不起作用。我想我可以通过临时更改代码来测试它,这样如果字段为空白,表单就会失败,确实如此。但是表单仍然发送,这就是我认为代码不正确的原因。希望这是有道理的

标签: php forms captcha


【解决方案1】:

就您的具体问题而言,它没有任何意义。如果用户验证码被隐藏,它绝对没用。

验证码一词代表...

完全自动化的公共图灵测试来区分计算机和人类

注意它说的是人类......

如果他们看不到 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) ?> 

【讨论】:

  • 谢谢。我已经想通了。我的原始代码确实有效(这也是如此),是一些 javascript 导致了问题。
【解决方案2】:

尝试改变

if($_POST["test"]!=""){

if(isset($_POST["test"]) && $_POST["test"]){

【讨论】:

  • 你也可以在里面扔一些error_reporting
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-15
  • 2015-07-16
  • 1970-01-01
  • 2012-07-20
  • 2020-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多