2017-04-12 9 views
0

私は現在コンタクトフォームを作成しており、フォームにはcaptchaのスパムを減らす必要があります。私は自分のコードでcaptchaを使用する方法についてチュートリアルに従いましたが、うまくいけば、誰かがここで助けることができる。どんな助けもありがとう。フォーム送信前に、あなたはまた、GoogleのCAPTCHAの検証のためにJavaScriptを使用することができますGoogle Captchaの動作に問題がある

HTML

<body> 
<hgroup> 
<h1>Contact Us</h1> 
<?php if(isset($_GET['CaptchaPass'])){ ?> 
<h3>Your message was sent, you should recieve an email back within 24 
hours.</h3> 
<?php } ?> 
<?php if(isset($_GET['CaptchaFail'])){ ?> 
<h3>Captcha Failed. Please try again!</h3> 
<?php } ?> 
</hgroup> 
<form method='post' action='contactver.php'> 
<div class="group"> 
<input type="text" name="name"><span class="highlight"></span><span 
class="bar"></span> 
<label>Name</label> 
</div> 
<div class="group"> 
<input type="email" name="email"><span class="highlight"></span><span 
class="bar"></span> 
<label>Email</label> 
</div> 
<div class="group"> 
<input type="phone" name="phone"><span class="highlight"></span><span 
class="bar"></span> 
<label>Phone No.</label> 
</div> 
<div class="group"> 
<input type="message" name="message"><span class="highlight"></span><span 
class="bar"></span> 
<label>Message</label> 
</div> 
<div class="g-recaptcha" data- 
sitekey="My Key, want to keep private :)"></div> 
<button type="submit" name="login" class="button buttonBlue">Submit Message 
<div class="ripples buttonRipples"><span class="ripplesCircle"></span></div> 
</button> 
</form> 

PHP

$firstname = $_POST['name']; 
$email = $_POST['email']; 
$phone = $_POST['phone']; 
$message = $_POST['message']; 

if(isset($_POST['login'])) { 

$url = 'https://www.google.com/recaptcha/api/siteverify'; 
$privatekey = "Want to keep this private :)"; 

$response = file_get_contents($url."? 
secret".$privatekey."&response=".$_POST['g-recaptcha- 
response']."&remoteip".$_SERVER['REMOTE_ADDR']); 

$data = json_decode($response); 

if(isset($data->success) AND $data->success==true) { 

echo("Pass"); 

}else { 

header('Location: contact.php?CaptchaFail=true'); 
echo("Fail"); 
} 


} 
+0

PHPの '?CaptchaPass'にリダイレクトされません。 – tilz0R

+0

@ tilz0R私はこの申し訳ありませんが、追加されませんでしたが、そこには、動作していない、他の修正?? : – Bailee

+0

Googleから '$ data'オブジェクトをチェックしてみませんか?もしあなたが' var_dump'や 'print_r'を実行しているのなら、おそらくレスポンスが表示されます。 – tilz0R

答えて

0

var v = grecaptcha.getResponse(); 
if(v.length == 0){ 
    document.getElementById('captcha').innerHTML="You can't leave Captcha Code empty"; 
    error = false; 
}else{ 
    document.getElementById('captcha').innerHTML=""; 
} 
if(error !== false){ 
    $('#yourformid').submit(); 
} 

return false; 
+0

本当に質問に答えません。 – tilz0R

+0

phpでできますか?:) – Bailee

+0

あなたのPHPコードを読んだ後ifあなたのコードは少し変更されます。 $ data = j son_decode($ response); if(isset($ data-> success)AND $ data-> success == true){ to $ status = json_decode($ response、true); if($ status ['success']){ –

0

私はこのラインで問題があると信じている:

if(isset($data->success) AND $data->success==true) 

それは次のようになります。

それ以外
if(isset($data->success) AND $data->success===true) 

、私はGoogleの作曲ライブラリ(https://github.com/google/recaptcha)を使用することをお勧めしますrecaptchaを検証する。彼らは最新の状態に保つので、コードと頭痛の行を解決します。

関連する問題