2017-01-16 4 views
2

私のウェブサイトwww.boakustikk.noにreCaptchaの連絡フォームがあります。 ほとんどすべてが機能しています。 reCaptchaが正常に実行された場合に限り、電子メールが配信されます。しかし、返品確認は、どちらの場合も、空の空のページにすぎません。 form.phpの31行目から41行目の関数が機能していないようです。ここに私のform.phpとform.htmlは次のとおりです。PHP reCaptchaは投稿後に確認を返さない

form.php:

<?php 
if(isset($_POST['submit']) && !empty($_POST['submit'])): 
    if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])): 
     //your site secret key 
     $secret = 'secret'; 
     //get verify response data 
     $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']); 
     $responseData = json_decode($verifyResponse); 
     if($responseData->success): 
      //contact form submission code 
      $name = !empty($_POST['name'])?$_POST['name']:''; 
      $email = !empty($_POST['email'])?$_POST['email']:''; 
      $message = !empty($_POST['message'])?$_POST['message']:''; 

      $to = '[email protected]'; 
      $subject = 'New contact form have been submitted'; 
      $htmlContent = " 
       <h1>Henvendelse fra din hjemmeside</h1> 
       <p><b>Navn: </b>".$name."</p> 
       <p><b>E-post: </b>".$email."</p> 
       <p><b>Melding: </b>".$message."</p> 
      "; 
      // Always set content-type when sending HTML email 
      $headers = "MIME-Version: 1.0" . "\r\n"; 
      $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; 
      // More headers 
      $headers .= 'From:'.$name.' <'.$email.'>' . "\r\n"; 
      //send email 
      @mail($to,$subject,$htmlContent,$headers); 

      $succMsg = 'Your contact request have submitted successfully.'; 
     else: 
      $errMsg = 'Robot verification failed, please try again.'; 
     endif; 
    else: 
     $errMsg = 'Please click on the reCAPTCHA box.'; 
    endif; 
else: 
    $errMsg = ''; 
    $succMsg = ''; 
endif; 
?> 

form.html:

<form action="form.php" method="POST"> 
    <input type="text" name="name" placeholder="Ditt navn" size="43" /><br><br> 
    <input type="text" name="email" placeholder="Din E-post" size="43" /><br><br> 
    <textarea type="text" name="message" rows="8" cols="41"></textarea><br><br> 
    <div class="g-recaptcha" data-sitekey="sitekey"></div><br> 
    <input type="submit" name="submit" value="SJEKK reCAPTCHA OG SEND MELDING"> 
</form> 

答えて

1

あなたが適切に$succMsgまたは$errMsgにテキストを追加します、あなたはページにそれらをエコーすることはありません。私が見る限り、他のコンテンツも出力しません。したがって、form.phpを実行すると、最終的に空白のページがブラウザに返されます。あなたは出力へのメッセージを必要とする

、最も簡単な実装は次のようになります。

エラーケースで
echo $succMsg; 

または

echo $errMsg; 

もちろん、HTMLマークアップとCSSを追加して、要件に応じてうまくフォーマットすることができます。

+0

あなたは私のヒーローです!!!!その今働いている。 – BOAkustikk

+0

私はもっと尋ねるのが恥ずかしいですが、新しい空白のページではなく連絡先フォームの下に返品を置く簡単な方法がありますか? – BOAkustikk

+0

最初に、うまくいきました。答えが助けになった場合は、受け入れられたとマークすることを忘れないでください。第2に、コンタクトフォームの下にリターンを置くことは、現在2つの異なるページにあるので、難しいです。 form.htmlとform.phpをマージすれば、それは非常に簡単です - あなたはページ上の好きな場所に 'echo'文を置くことができます。もし' contains'文があればそれを表示する 'if'文を持つことができます任意のテキスト(例えば、ユーザーがフォームをまだ送信していない場合は表示されません)。 – ADyson

関連する問題