Bootstrap PHP表单Post方法不起作用

时间:2017-08-25 03:59:06

标签: php twitter-bootstrap-3

我有一个注册电子邮件页面,它使用推荐ID,但如果没有用户没有被任何人推荐,那么通过重定向,我使用默认af id = 1 使用以下代码::

if ( !isset( $_GET['af'] ) && empty( $_GET['af'] ) ){
header('Location: register-email.php?af=1');exit();
}

下一步是表格代码:

        <form class="form-horizontal" role="form" method="post" name="register_email" action="<?php echo esc_url($_SERVER['PHP_SELF']); ?>">          
            <div class="form-group">
            <label class="control-label col-sm-2" for="email">Email:</label>
            <div class="col-sm-6">
      <input type="email" class="form-control" id="email" name="email" placeholder="Enter email">
    </div>
                </div>
                 <div class="form-group"> 
                 <div class="col-sm-offset-2 col-sm-6">  
        <div class="g-recaptcha" data-sitekey="somecode"></div>
                     </div></div>
                     <div class="form-group"> 
    <div class="col-sm-offset-2 col-sm-6">
        <button type="submit" class="btn btn-warning" name="register-email">Register Email</button>
                     </div></div>
        </form>

以下是PHP的背景部分:

if (isset($_POST['email'],$_POST['g-recaptcha-response'],$_GET['af'])) {
$test="OK";
 }  

它从不打印“OK”,我测试了GET部件的工作正常而不是空或空值。 但电子邮件&amp; g recaptcha part为null 。我不知道为什么。以前它曾经在没有引导程序集成的情况下工作。

注意:我没有使用echo $ test = OK,因为我在其他页面上用echo语句打印它,整个过程包含两个文件,

  • register-email.php(我在这里使用echo $test;
  • register-email.inc.php(包括isset POST部分)

4 个答案:

答案 0 :(得分:0)

尝试回显$ test。你刚存储它,你没有打印它。你的条件甚至没有正确的语法。

答案 1 :(得分:0)

这里有几个错误。您不能混用union { int i; float f; } u = {.i= 99}; printf("f %g\n", u.f); $_GET,在这种情况下,它必须全是$_POST。在测试$_POST时,您不能只使用逗号。如下:

isset()

如果上述代码不起作用,请检查一下。

if (isset($_POST['email']) AND isset($_POST['g-recaptcha-response']) AND isset($_GET['af'])) {
 $test="OK";
 } 

现在您可以看到是否未设置其中任何一个。请记住,要使if(!isset($_POST['email']) echo "Email not set"; if(!isset($_POST['g-recaptcha-response']) echo "Recaptcha not set"; if(!isset($_POST['af']) echo "AF not set"; 具有值,用户必须正确回答 reCaptcha 图像测试(人工测试),并且必须正确实施 reCaptcha

答案 2 :(得分:0)

表单操作删除并更改提交按钮名称register_email。添加此PHP代码后。 if(isset($ _ POST ['register_email'])){header('Location:register-email.php?af = 1'); exit();}

答案 3 :(得分:0)

经过大量调试后,我自己解决了问题。由于重定向,表单无法正常工作。因此,删除重定向代码,实际上,使用其他类型的安全编码,以检查GET是变量是否为空在内部。

if (isset($_POST['email']) AND isset($_POST['g-recaptcha-response'])) {
   if ( !isset( $_GET['af'] ) || empty( $_GET['af'] ) ){
      $af_code = 1;
     }  
      else {
          $af_code = filter_input(INPUT_GET,'af',FILTER_SANITIZE_STRING);
           }
 }

现在它的工作安全&amp;声