簡體   English   中英

Bootstrap PHP Form Post方法不起作用

[英]Bootstrap PHP Form Post method not working

我有一個注冊電子郵件頁面,該頁面使用引薦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部分的工作正常,而不是空值或null值。 但是email&g recaptcha部分為null 我不知道為什么。 以前,它可以在不進行引導集成的情況下工作。

注意 :我沒有使用echo $ test = OK,因為我正在使用echo語句在其他頁面上打印此文件,整個過程包括兩個文件,

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

嘗試回顯$ test。 您只是存儲了它,而沒有打印它。 而且您的條件甚至不是正確的語法。

這里有幾個錯誤。 您不能混合使用$_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";

現在,您可以查看是否未設置任何一個。 請記住, 要使 $_POST['g-recaptcha-response']具有值,用戶必須正確回答reCaptcha圖像測試(人類測試),並且必須正確實現reCaptcha

表單操作刪除並更改提交按鈕名稱為register_email。 添加此php代碼后。 if(isset($ _ POST ['register_email'])){header('Location:register-email.php?af = 1'); exit();}

經過大量調試后,我自己解決了問題。 表單由於重定向而無法正常工作。 因此,刪除重定向代碼,實際上,使用另一種安全編碼來檢查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);
           }
 }

現在,它的工作安全無虞

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM