Php Recaptcha检查页不返回任何内容

Php Recaptcha检查页不返回任何内容,php,recaptcha,Php,Recaptcha,我有一个关于我基于PHP的项目的反馈网页。反馈页面有一个表格,上面有我需要的所有字段,我把recaptcha display放在那里,它工作得很好:所有内容都正确显示,功能都符合谷歌手册。表单“action”被设置为另一个页面,该页面只需检查recaptcha,防止sql注入,并将用户消息插入数据库。一切似乎都很简单 然而,问题在第二页。它只返回空白,即使它不应该: <?php require_once('recaptchalib.php'); $privatekey = "my

我有一个关于我基于PHP的项目的反馈网页。反馈页面有一个表格,上面有我需要的所有字段,我把recaptcha display放在那里,它工作得很好:所有内容都正确显示,功能都符合谷歌手册。表单“action”被设置为另一个页面,该页面只需检查recaptcha,防止sql注入,并将用户消息插入数据库。一切似乎都很简单

然而,问题在第二页。它只返回空白,即使它不应该:

<?php
  require_once('recaptchalib.php');
  $privatekey = "my private key";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    // What happens when the CAPTCHA was entered incorrectly
     //in this case the returned page is totally blank
     echo <<<EOT
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Error</title>
</head>
<body bgcolor="WhiteSmoke">

EOT;

    switch ($_POST["lang"]) {
    case "en":
        echo <<<EOT

<table width="100%" height="100%" border="0" cellspacing="10" align="center">
  <tr>
    <td width="100" height="100" align="center" valign="middle"><h3>CAPTCHA failed ($resp->error)!</h3></td>
  </tr>
  </table>
  <meta HTTP-EQUIV='REFRESH' content='3; url=feedback_en.php'>
</body>
</html>
EOT;
        break;
    //here go other possible $_POST['lang'] values which i removed from the sample since its irrelevant
}
  } else {
    // Your code here to handle a successful verification
    //in this case the page returns totally blank either

    //here goes some db stuff

    //here goes sql injection check which is also skipped for this code

    //more db stuff

        switch ($_POST["lang"]) {
    case "en":
        echo <<<EOT
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Thank you!</title>
<meta HTTP-EQUIV='REFRESH' content='3; url=feedback_en.php'>
</head>

<body bgcolor="WhiteSmoke">
<table width="100%" height="100%" border="0" cellspacing="10" align="center">
  <tr>
    <td width="100" height="100" align="center" valign="middle"><h3>Thank you for the feedback, with your help this service will be better!</h3></td>
  </tr>
  </table>
</body>
</html>
EOT;
        break;
    //and so on...
} //end of switch
    //and we have nothing
  }
  ?>


正如代码中所指出的,无论测试结果如何,输出页面都是空白的。只有将recaptcha字段完全留空时,它才有一定的效果。它根据想法返回HTML,文本为“CAPTCHA失败(不正确的CAPTCHA sol)!”

php站点上的空白页面通常表示错误。打开调试(显示错误/错误报告),检查服务器日志等。。。然后在你开发的时候让它们开着。在devel模式下,它们一开始就不应该关闭。我使用我的调试子域,所有错误报告都完全打开(这有时很烦人,但对于所有警告都很有用)。在这里我没有错误,没有警告,只是空白…然后开始在脚本中输入调试输出<代码>回声“我在这里!”并查看脚本中止的位置。如果html存在但不完整,因此呈现为空白页面,您是否查看了
查看源代码
。将对有问题的页面和recaptchalib.php执行此操作。是的,我在浏览器中查看了生成页面的HTML代码。它只是一片空白!好的