php - $_POST 字段未转发到 verify.php 脚本 reCAPTCHA

标签 php html css recaptcha

我有一个带有 CSS 样式的表单。当我保留 CSS 样式时,reCAPTCHA 小部件不会在 $_POST 数据中发送“recaptcha_challenge_field”和“recaptcha_response_field”。他们导致我的 $resp 总是评估为 false。

我发现如果删除 id="contactform"属性,reCAPTCHA 将正常工作。

这是我的表单代码:

<form action="PHP/contact2.php" method="post" id="contactform">
      <ol>
        <li>
          <label for="name">Name <span class="red">*</span></label>
          <input id="name" name="name" class="text" />
        </li>
        <li>
          <label for="email">email <span class="red">*</span></label>
          <input id="email" name="email" class="text" />
        </li>
        <li>
          <label for="company">Company</label>
          <input id="company" name="company" class="text" />
        </li>
        <li>
          <label for="subject">Subject</label>
          <input id="subject" name="subject" class="text" />
        </li>
        <li>
          <label for="message">Message <span class="red">*</span></label>
          <textarea id="message" name="message" rows="6" cols="50"></textarea>
        </li>

        <?php
          require_once("PHP/recaptchalib.php");
          $publickey = "Public key is here, I've removed it for security"; 
          echo recaptcha_get_html($publickey);
        ?>

        <li class="buttons">
          <input type="image" name="imageField" id="imageField" src="images/send.gif" class="send" />
          <div class="clr"></div>
        </li>
      </ol>
    </form>

我的 CSS 样式在这里:

/********** contact form **********/
#contactform { margin:0; padding:5px 10px;}
#contactform * {
color:#000;
}
#contactform ol { margin:0; padding:0; list-style:none;}
#contactform li { margin:0; padding:0; background:none; border:none; display:block;     clear:both;}
#contactform li.buttons { margin:5px 0 5px 0;}
#contactform label {
margin:0;
width:110px;
display:block;
padding:10px 0;
color:#605f5f;
font: normal 12px Arial, Helvetica, sans-serif;
text-transform:capitalize;
float:left;
}
#listform label {
margin:0;
width:110px;
display:block;
padding:10px 0;
color:#605f5f;
font: normal 12px Arial, Helvetica, sans-serif;
text-transform:capitalize;
float:left;
}

#contactform label span { color:#F00;}
#contactform input.text { width:200px; border:1px solid #e8e8e8; margin:10px 0;     padding:5px 2px; height:16px; background:#fff; float:left;}
#contactform dropdown {
width:200px;
border:1px solid #e8e8e8;
margin:10px 0;
padding:5px 2px;
height:16px;
background:#fff;
float:left;

Q-RFL; AMPS; 
}


#contactform textarea { width:410px; border:1px solid #e8e8e8; margin:10px 0; padding:2px; background:#fff; float:left;}
#contactform li.buttons input { padding:3px 0 3px 110px; margin:0; border:0; color:#FFF; float:left;}

我用于处理表单的服务器端 php 是快速入门指南中的千篇一律。我只添加了一个简单的 if 语句来检查是否传递了 reCAPTCHA 字段。

这是我从服务器端得到的响应:

没有正确输入 reCAPTCHA。回去再试一次。(reCAPTCHA said: incorrect-captcha-sol)

但 reCAPTCHA 输入正确。

有什么建议吗?

最佳答案

您应该在表单上添加一个提交按钮并使用 $_POST 传递该值。

要将字段值传递给 verify.php,您应该这样做

<form ....>
 .........
 .........
 <input type=submit id=x name=x value=Submit>
</form>

在php中,这样写

 if(isset($_POST['x']) && $_POST['message']!="" ......){
   $value1=$_POST['message'];
   $value2=$_POST['subject'];
   ......................
  }

关于php - $_POST 字段未转发到 verify.php 脚本 reCAPTCHA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26366068/

相关文章:

php - Mysql选择时间戳比较

html - 传递外部 .xml 文件的内容并保留样式标签

php - 迁移旧表数据到新表查询

PHP/CodeIgniter关系型数据库数组搭建

php - 根据用户的时间设置问候语(早上好,下午好……)

javascript - 抓取 HTML5 Canvas 的每一帧

html - 在 Google 搜索结果中显示文章评分

javascript - 在 Angular 2 中动态注入(inject)已编译的应用程序

html - 当分辨率改变时使面板进入新行

javascript - 而当我使用单值时,它会抛出错误。 Uncaught TypeError : health. 映射不是一个函数