2016-09-01 17 views
0

私がPHPに慣れていないので、これがばかげた質問であれば、私を許してください。私は何年か前にC++をやっていて、C#でUnityをやっています。

私はreCaptchaで働いている働くhtml/js/php連絡フォームを取得しようとしています。 captchaがチェックされ、「成功」というメッセージが表示されていれば、フォームは正常に機能します。キャプチプがチェックされていない場合は、メッセージを表示してフォーム電子メールを送信しません。以下のコードスニペットは、キャプチャがチェックされていないのに電子メールが送信されない限りメッセージは表示されません。誰も助けることができますか?

$okMessage = 'Contact form successfully submitted. Thank you, we will get back to you soon!'; 
$captchaMessage = 'There was an error while submitting the form. Please check the captcha box.'; 
$spamMessage = 'There was an error while submitting the form. Spamers not welcome.'; 
$captcha = $_POST['g-recaptcha-response']; 

try 
{ 
    //Sanitise Inputs 
    $emailText = "You have new message from contact form\n=============================\n"; 
    $emailText .= "First Name: " . @trim(stripslashes($_POST['name'])). "\n"; 
    $emailText .= "Last Name: " . @trim(stripslashes($_POST['surname'])). "\n"; 
    $emailText .= "Company: " . @trim(stripslashes($_POST['company'])). "\n"; 
    $emailText .= "Email: " . @trim(stripslashes($_POST['email'])). "\n"; 
    $emailText .= "Message: " . @trim(stripslashes($_POST['message'])). "\n"; 

    if(!$captcha){ 
     $responseArray = array('type' => 'danger', 'message' => $captchaMessage); 
     exit; 
    } 
    $secretKey = "secret_key"; 
    $ip = $_SERVER['REMOTE_ADDR']; 
    $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$captcha."&remoteip=".$ip); 
    $responseKeys = json_decode($response,true); 
    if(intval($responseKeys["success"]) !== 1) { 
     $responseArray = array('type' => 'danger', 'message' => $spamMessage); 
    } else { 
     mail($sendTo, $subject, $emailText, "From: " . $from); 
     $responseArray = array('type' => 'success', 'message' => $okMessage); 
    } 
} 
+1

あなたのcaptchaの応答は何ですか? – boroboris

答えて

1

exitスクリプトを停止します。メッセージは表示されません。

if(!$captcha){ 
     $responseArray = array('type' => 'danger', 'message' => $captchaMessage); 
} 
else 
{ 
     $secretKey = "secret_key"; 
     $ip = $_SERVER['REMOTE_ADDR']; 
     $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$captcha."&remoteip=".$ip); 
     $responseKeys = json_decode($response,true); 
     if(intval($responseKeys["success"]) !== 1) { 
      $responseArray = array('type' => 'danger', 'message' => $spamMessage); 
     } else { 
      mail($sendTo, $subject, $emailText, "From: " . $from); 
      $responseArray = array('type' => 'success', 'message' => $okMessage); 
     } 
} 
// Here the script continue 
+0

私はちょうど同じことに答えるつもりでした、あなたは私にそれを打ち負かしました。 –

+0

ありがとう@ThinkTank。私は自分のコードがメッセージを表示して終了すると思った。 else節を追加することで修正されました。 – Adrian