Я использую GoDaddy в качестве своего веб-сервера.reCAPTCHA и PHP для отправки формы электронной почты
Я пытаюсь внедрить reCAPTCHA в мою форму электронной почты для своего веб-сайта, однако, похоже, она не сможет работать. То есть, я передаю тест reCAPTCHA, но письмо не отправляется.
Я использовал PHP и HTML только для этого сайта.
Я также добавил скрипт в моей голове тег
<script src='https://www.google.com/recaptcha/api.js'></script>
Вот фрагменты кода.
HTML:
<form action="#" id="form" method="post" name="form">
<div class="form-group">
<label for="name-field">Name</label>
<input name="vname" class="form-control" placeholder="Enter Your Full Name" type="text" value="">
</div>
<div class="form-group">
<label for="email-field">Email address</label>
<input name="vemail" class="form-control" placeholder="Enter Your Email" type="text" value="">
</div>
<div class="form-group">
<label for="contract-field">Enter Contract Here</label>
<textarea name="msg" class="form-control" placeholder="Enter Contract Here" rows="5"></textarea>
</div>
<div class="g-recaptcha form-group" data-sitekey="SITEKEY"></div>
<div class="form-group"><button id="send" name="submit" type="submit" class="btn btn-default">Submit</button></div>
</form>
PHP:
<?php
//Checking For reCAPTCHA
$captcha;
if(isset($_POST['g-recaptcha-response'])){
$captcha=$_POST['g-recaptcha-response'];
}
// Checking For correct reCAPTCHA
$response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=SECRETKEY&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']);
if($response.success==false){
echo "Your CAPTCHA response was wrong."
exit;
}
else{
// Checking For Blank Fields..
if($_POST["vname"]==""||$_POST["vemail"]==""||$_POST["msg"]==""){
echo "Fill All Fields..";
}
else{
// Check if the "Sender's Email" input field is filled out
$email=$_POST['vemail'];
// Sanitize E-mail Address
$email =filter_var($email, FILTER_SANITIZE_EMAIL);
// Validate E-mail Address
$email= filter_var($email, FILTER_VALIDATE_EMAIL);
if (!$email){
echo "Invalid Sender's Email";
}
else{
$to = '[email protected]';
$subject = 'Test';
$message = $_POST['msg'];
$headers = 'From:'. $email . "\r\n"; // Sender's Email
// Message lines should not exceed 70 characters (PHP rule), so wrap it
$message = wordwrap($message, 70, "\r\n");
// Send Mail By PHP Mail Function
mail($to, $subject, $message, $headers);
echo "Your mail has been sent successfully!";
}
}
} else {
echo "Your CAPTCHA response was wrong. Try again."
exit;
}?>
Am I реализации на стороне сервера не так? Или это клиентская сторона?
Я смог отправить и получить письмо, однако проблема в том, что я могу просто игнорировать reCAPTCHA. Любая идея почему? – Tony
Да, я отредактирую код и напишу его еще раз, просто взгляните через 5 минут – sailesh
Я решил это! Я сделал это 'if ($ response. Success == false) {' в это 'if (! $ Captcha || $ response.success == false) {'. Спасибо за помощь :) – Tony