[英]Form submit not working with twitter bootstrap (PHP $_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語句在其他頁面上打印此文件,整個過程包括兩個文件,
echo $test;
) 嘗試回顯$ 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.