2016-07-04 104 views
0

我想在驗證碼驗證碼中創建簡單的聯繫表單。但事實證明,實現驗證碼不在我的聯盟中。簡單的PHP驗證碼聯繫表格

我在stackoverflow上發現了一個簡單的答案類似的問題,推動我離結尾更近了一步,但是我又陷入了困境。

所以我需要一個聯繫表格,只檢查是否輸入文本,如果正確的captcha被回答,電子郵件是不是強制性的。

</br> 
 

 
<?php 
 
\t \t \t \t $a=rand(2,9); 
 
\t \t \t \t $b=rand(2,9); 
 
\t \t \t \t $c=$a+$b; 
 

 

 
\t if (isset($_POST['contact_text']) && isset($_POST['contact_email'])) { 
 
\t \t $contact_text = $_POST['contact_text']; 
 
\t \t $contact_email = $_POST['contact_email']; 
 
\t \t $recaptcha = $_POST['recaptcha']; 
 
\t \t 
 
\t \t $info = 'Pranešimas apie korupciją: '; 
 
\t \t $sender = 'Atsiuntė: '; 
 
\t \t \t 
 
\t \t if (!empty($contact_text) && ($recaptcha == $c)) { 
 
\t \t \t \t 
 
\t \t echo $recaptcha; 
 
\t \t 
 
\t \t $to = '[email protected]'; 
 
\t \t $subject = 'Korupcija'; 
 
\t \t $body = $sender."\n".$contact_email."\n".$info."\n".$contact_text; 
 
\t \t $headers = 'From: '.$contact_email; 
 
\t \t 
 
\t \t 
 
\t \t if (@mail($to,$subject, $body, $headers)) { 
 
\t \t \t echo 'Jūsų pranešimas sėkmingai išsiustas. '; 
 
\t \t \t 
 
\t \t } else { 
 
\t \t } echo 'Įvyko klaida, bandykite dar karta.'; 
 
\t \t \t 
 
\t \t } else { 
 
\t \t \t echo 'Neteisingai užpildyta forma.'; 
 
\t \t \t } \t 
 
\t } 
 
?> 
 
<form action="contact1.php" method="post"> 
 
\t Pranešimas apie korupciją:<br><textarea name="contact_text" rows="6" cols="30" maxlength="1000" ></textarea><br><br> <!-- --> 
 
\t Email (nebūtinas):<br><input type="text" name="contact_email" maxlength="30"> 
 
    <?php echo $a."+".$b."="?><input type="number" name="recaptcha" maxlength="2" style="width:40px" /> 
 
    <input type="submit" value="Siusti"> 
 
    <br>  
 
</form>

現在的問題是,我總是得到那個細節是不正確的消息。我試圖回聲recaptcha只是爲了看看$ c是否正確,它的工作原理。但由於某種原因,無法比較$ recaptcha與$ c或其他問題,我不確定。

回答

0

當用戶提交聯繫表單與驗證檢查時,$ c的值將是完全不同的值。該值將在每個請求中更改,因爲該腳本被重新解釋。

0

您必須在初始頁面加載時保存$ c的值,以便您可以在接下來的請求中對其進行比較。您可以通過將其存儲在$ _SESSION中來實現。

0

你可以這樣寫

<?php 
    $min_number = 2; 
    $max_number = 9; 


    $random_number1 = mt_rand($min_number, $max_number); 
    $random_number2 = mt_rand($min_number, $max_number); 


    if (isset($_POST['contact_text']) && isset($_POST['contact_email'])) { 
     $contact_text = $_POST['contact_text']; 
     $contact_email = $_POST['contact_email']; 
     $recaptcha = $_POST['recaptcha']; 
     $firstNumber = $_POST["firstNumber"]; 
     $secondNumber = $_POST["secondNumber"]; 

     $checkTotal = $firstNumber + $secondNumber; 


     $info = 'Pranešimas apie korupciją: '; 
     $sender = 'Atsiuntė: '; 

     if (!empty($contact_text) && ($recaptcha != $checkTotal)) { 

     echo $recaptcha; 

     $to = '[email protected]'; 
     $subject = 'Korupcija'; 
     $body = $sender."\n".$contact_email."\n".$info."\n".$contact_text; 
     $headers = 'From: '.$contact_email; 


     if (@mail($to,$subject, $body, $headers)) { 
      echo 'Jūsų pranešimas sėkmingai išsiustas. '; 

     } else { 
     } echo 'Įvyko klaida, bandykite dar karta.'; 

     } else { 
      echo 'Neteisingai užpildyta forma.'; 
      } 
    } 
?> 
<form action="contact1.php" method="post"> 
    Pranešimas apie korupciją:<br><textarea name="contact_text" rows="6" cols="30" maxlength="1000" ></textarea><br><br> <!-- --> 
    Email (nebūtinas):<br><input type="text" name="contact_email" maxlength="30"> 
    <?php 
     echo $random_number1 . ' + ' . $random_number2 . ' = '; 
    ?> 
    <input type="number" name="recaptcha" maxlength="2" style="width:40px" /> 
    <input name="firstNumber" type="hidden" value="<?php echo $random_number1; ?>" /> 
    <input name="secondNumber" type="hidden" value="<?php echo $random_number2; ?>" /> 
    <input type="submit" value="Siusti"> 
    <br>  
</form> 

這可能會解決你的問題

0

你應該使用會話來解決你的問題,我沒有在你的代碼變化不大,它應該正常地運行。

<?php 
    @session_start(); 

    if (isset($_POST['contact_text']) && isset($_POST['contact_email'])) { 

     $contact_text = $_POST['contact_text']; 
     $contact_email = $_POST['contact_email']; 
     $recaptcha = $_POST['recaptcha']; 

     $info = 'Pranešimas apie korupciją: '; 
     $sender = 'Atsiuntė: '; 

     if (!empty($contact_text) && ($recaptcha == $_SESSION["captcha"])) { 

      echo $recaptcha; 

      $to = '[email protected]'; 
      $subject = 'Korupcija'; 
      $body = $sender."\n".$contact_email."\n".$info."\n".$contact_text; 
      $headers = 'From: '.$contact_email; 


      if (@mail($to,$subject, $body, $headers)) { 
       echo 'Jūsų pranešimas sėkmingai išsiustas. '; 

      } else { 

      } echo 'Įvyko klaida, bandykite dar karta.'; 

     }else{ 
      echo 'Neteisingai užpildyta forma.'; 
     } 
    }else{ 

     $a=rand(2,9); 
     $b=rand(2,9); 
     $c=$a+$b; 

     //setting captcha code in session 
     $_SESSION["captcha"] = $c; 

     ?> 
     <form action="contact1.php" method="post"> 
      Pranešimas apie korupciją:<br><textarea name="contact_text" rows="6" cols="30" maxlength="1000" ></textarea><br><br> <!-- --> 
      Email (nebūtinas):<br><input type="text" name="contact_email" maxlength="30"> 
      <?php echo $a."+".$b."="?><input type="number" name="recaptcha" maxlength="2" style="width:40px" /> 
      <input type="submit" value="Siusti"> 
      <br>  
     </form> 
<?php 
    } 
?>