Пытаюсь добавить в форму ReCaptcha. Я использую formhandler.php со страницей error.php и success.php.
Я поставил этот код
<?php
if (isset($_POST['submit'])){
$url = 'https://google.com/recaptcha/api/siteverify';
$privatekey = "xxx";
$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) {
header('Location: success.php');
}else{
header('Location: error.php?CaptchaFail=True');
}
}
?>
в мой formhandler.php. Если я не отмечу ReCaptcha, мой error.php работает. Но я все равно получаю страницу с ошибкой, если использую ReCaptcha.
Я плохо разбираюсь в php, и я думаю, что где-то есть ошибка.
Это весь код formhandler.php, который я использую:
<?php
if (isset($_POST['email'])) {
$url = 'https://google.com/recaptcha/api/siteverify';
$privatekey = "xxxx";
$response = file_get_contents($url."?secret = ".$privatekey."&response = ".$_POST['g-recaptcha-response']."&remoteip = ".$_SERVER['REMOTE_ADDR']);
$data = json_decode($response);
$email_to = "xxx";
$email_subject = "Kontaktanfrage - ec-parts.de";
$email = $_POST['email'];
$name = $_POST['name'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$checkboxaccept = $_POST['checkboxaccept'];
$email_message = "Nachricht:\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
function getUserIpAddr()
{
if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
return $_SERVER['HTTP_CLIENT_IP'];
}
else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
return $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
return $_SERVER['REMOTE_ADDR'];
}
}
$email_message .= "Name: ".clean_string($name)."\n";
$email_message .= "Email: ".clean_string($email)."\n";
$email_message .= "Telefon: ".clean_string($phone)."\n";
$email_message .= "Nachricht: ".clean_string($message)."\n";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/plain;charset=UTF-8" . "\r\n";
$headers .= 'From: '.$email. "\r\n";
if (@mail($email_to, $email_subject, $email_message, $headers, $checkboxaccept, $response))
if (isset($data->success) AND $data->success==true) {
header('Location: success.php');
} else {
header('Location: error.php?CaptchaFail=True');
}
}
?>
Может это из-за кода if (isset($data->success) AND $data->success==true). Я не уверен, куда его девать. Я все еще новичок в PHP ...
Я хочу, чтобы formhandler.php только проверил, использовал ли я ReCaptcha. Я искал много разных кодов, но этот почти работает.
При необходимости вы можете протестировать форму здесь: Форма обратной связи
Обновлено:
Я изменил код, используя решение из этого Почта:
Мой formhandler.php:
<?php
function validate_email_address($email = false) {
return (preg_match('/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i', $email))? true : false;
}
function remove_email_injection($field = false) {
return (str_ireplace(array("\r", "\n", "%0a", "%0d", "Content-Type:", "bcc:","to:","cc:"), '', $field));
}
// Set email variables
$email_to = "xxx";
$email_subject = "Kontaktanfrage - ec-parts.de";
// Set required fields
$required_fields = array('email', 'name', 'message', 'checkboxaccept');
// set error messages
$error_messages = array(
'email' => 'Bitte geben Sie eine gültige E-mailadresse an.',
'name' => 'Bitte geben Sie Ihren Namen an.',
'message' => 'Bitte schreiben Sie uns, worum es in Ihrer Anfrage geht.',
'checkboxaccept' => 'Bitte klicken Sie die Checkbox an, wenn Sie fortsetzen wollen.'
);
// Set form status
$form_complete = FALSE;
// configure validation array
$validation = array();
// boolean variable to validate recaptcha
$valid_recaptcha = false;
if (isset($_POST['submit'])){
// First validate recaptcha
$url = 'https://www.google.com/recaptcha/api/siteverify';
$privatekey = "xxx";
$response = file_get_contents($url."?secret = ".$privatekey."&response = ".$_POST['g-recaptcha-response']."&remoteip = ".$_SERVER['REMOTE_ADDR']);
$data = json_decode($response);
if ($data->success) {
$valid_recaptcha = true;
}
if ($valid_recaptcha){
// now process your form here. sanitize and validate input fields
// Sanitise POST array
foreach($_POST as $key => $value){
$_POST[$key] = remove_email_injection(trim($value));
}
// Loop into required fields and make sure they match our needs
foreach($required_fields as $field) {
// the field has been submitted?
if (!array_key_exists($field, $_POST)){
array_push($validation, $field);
}
// check there is information in the field?
if ($_POST[$field] == ''){
array_push($validation, $field);
}
// validate the email address supplied
if ($field == 'email'){
if (!validate_email_address($_POST[$field])){
array_push($validation, $field);
}
}
}
// basic validation result
if (count($validation) == 0) {
// Prepare our content string
$email_content = 'Neue Kontaktanfrage: ' . "\n\n";
// simple email content
foreach($_POST as $key => $value){
if ($key != 'submit' && $key != 'g-recaptcha-response') $email_content .= $key . ': ' . $value . "\n";
}
// if validation passed ok then send the email
mail($email_to, $email_subject, $email_content);
// Update form switch
$form_complete = TRUE;
}
}
}
?>
Мой kontakt.php:
<!DOCTYPE html>
<html >
<head>
<!-- Site made with Mobirise Website Builder v4.5.2, https://mobirise.com -->
<meta charset = "UTF-8">
<meta http-equiv = "X-UA-Compatible" content = "IE=edge">
<meta name = "generator" content = "Mobirise v4.5.2, mobirise.com">
<meta name = "viewport" content = "width=device-width, initial-scale=1, minimum-scale=1">
<link rel = "shortcut icon" href = "assets/images/favicon-1.gif" type = "image/x-icon">
<meta name = "description" content = "ec - exclusive carparts GmbH Berlin, Der Tuning Spezialist aus Berlin. Kontaktdaten.">
<title>ec - exclusive carparts GmbH Berlin. Kontakt. TÜV- Profi, Brabus Händler Berlin.</title>
<link rel = "stylesheet" href = "assets/bootstrap-material-design-font/css/material.css">
<link rel = "stylesheet" href = "assets/et-line-font-plugin/style.css">
<link rel = "stylesheet" href = "https://fonts.googleapis.com/css?family=Montserrat:400,700">
<link rel = "stylesheet" href = "https://fonts.googleapis.com/css?family=Raleway:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i">
<link rel = "stylesheet" href = "https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic&subset=latin">
<link rel = "stylesheet" href = "assets/tether/tether.min.css">
<link rel = "stylesheet" href = "assets/bootstrap/css/bootstrap.min.css">
<link rel = "stylesheet" href = "assets/soundcloud-plugin/style.css">
<link rel = "stylesheet" href = "assets/dropdown/css/style.css">
<link rel = "stylesheet" href = "assets/theme/css/style.css">
<link rel = "stylesheet" href = "assets/mobirise3-blocks-plugin/css/style.css">
<link rel = "stylesheet" href = "assets/mobirise/css/mbr-additional.css" type = "text/css">
<meta name = "rating" content = "General" />
<meta http-equiv = "Content-Type" content = "text/html; charset=iso-8859-1" />
<meta name = "language" content = "de" />
<meta name = "keywords" content = "exclusive carparts Berlin,ec-parts,Kontakt,Berlin" />
<meta name = "publisher" content = "Website by inventmedia. http://www.inventmedia.de" />
<meta name = "robots" content = "all,index,follow" />
<script src='https://www.google.com/recaptcha/api.js'></script>
</head>
<body>
<section id = "menu-3g" data-rv-view = "463">
<nav class = "navbar navbar-dropdown navbar-fixed-top">
<div class = "container">
<div class = "mbr-table">
<div class = "mbr-table-cell">
<div class = "navbar-brand">
<a href = "http://www.ec-parts.de" class = "navbar-logo"><img src = "assets/images/ecparts-logo-menu-big-520x128.png" alt = "ec - exclusive carparts Berlin" title = "ec - exclusive carparts Berlin"></a>
</div>
</div>
<div class = "mbr-table-cell">
<button class = "navbar-toggler pull-xs-right hidden-md-up" type = "button" data-toggle = "collapse" data-target = "#exCollapsingNavbar">
<div class = "hamburger-icon"></div>
</button>
<ul class = "nav-dropdown collapse pull-xs-right nav navbar-nav navbar-toggleable-sm" id = "exCollapsingNavbar"><li class = "nav-item"><a class = "nav-link link" href = "index.php">STARTSEITE</a></li><li class = "nav-item dropdown"><a class = "nav-link link" href = "auto-folierung-fahrzeug-komplettbeklebung-berlin.php" aria-expanded = "false">FOLIERUNG</a></li><li class = "nav-item dropdown"><a class = "nav-link link" href = "portfolio.php" aria-expanded = "false">PORTFOLIO</a></li><li class = "nav-item"><a class = "nav-link link" href = "service-partner.php" aria-expanded = "false">SERVICE & PARTNER</a></li>
<li class = "nav-item"><a class = "nav-link link" href = "tuev-sondereintragung.php" aria-expanded = "false">TÜV</a></li><li class = "nav-item"><a class = "nav-link link" href = "produkte.php" aria-expanded = "false">PRODUKTE & LEISTUNGEN</a></li><li class = "nav-item"><a class = "nav-link link" href = "kontakt.php" aria-expanded = "false">KONTAKT</a></li></ul>
<button hidden = "" class = "navbar-toggler navbar-close" type = "button" data-toggle = "collapse" data-target = "#exCollapsingNavbar">
<div class = "close-icon"></div>
</button>
</div>
</div>
</div>
</nav>
</section>
<section class = "engine"><a href = "https://mobirise.co/a">web builder</a></section><section class = "mbr-section article mbr-parallax-background mbr-after-navbar" id = "msg-box8-3h" data-rv-view = "465" style = "background-image: url(assets/images/start-2-836x576.jpg); padding-top: 200px; padding-bottom: 200px;">
<div class = "mbr-overlay" style = "opacity: 0.5; background-color: rgb(34, 34, 34);">
</div>
<div class = "container">
<div class = "row">
<div class = "col-md-8 col-md-offset-2 text-xs-center">
</div>
</div>
</div>
</section>
<div id = "header3-3i" custom-code = "true" data-rv-view = "468"><section class = "mbr-section mbr-section__container article" data-rv-view = "1005" style = "background-color: rgb(239, 239, 239); padding-top: 20px; padding-bottom: 20px;">
<div class = "container">
<div class = "row">
<div class = "col-xs-12">
<h1 class = "card-header mbr-editable-content" style = "text-align: left; font-family: Oswald, sans-serif; font-size: 32px; color: rgb(34, 34, 34);">Kontakt</h1>
</div>
</div>
</div>
</section></div>
<div id = "content6-3o" custom-code = "true" data-rv-view = "469"><section class = "mbr-section article mbr-section__container" data-rv-view = "327" style = "background-color: rgb(239, 239, 239); padding-top: 20px; padding-bottom: 20px; border-bottom: 1px solid #ccc;">
<div class = "container">
<div class = "row">
<div class = "col-xs-12 col-md-6 lead mbr-editable-full"><p><strong>ec exclusive carparts GmbH
</strong></p>
<p>Geschäftsführer: Mirko Schröter
</p>
<p>Blücherstrasse 60
</p><p>10961 Berlin</p><p><br></p><p>Fon: +49 (0) 30 36 40 67 36
</p><p>Fax: +49 (0) 30 36 40 67 35
</p><p>Internet: <a href = "http://www.ec-parts.de" target = "_blank">www.ec-parts.de</a>
</p><p>E-Mail: <a href = "mailto:[email protected]">[email protected]</a>e</p></div>
<div class = "col-xs-12 col-md-6 lead mbr-editable-full">
<p><strong>Öffnungszeiten: </strong>
</p><p>Mo. - Fr.: 10 Uhr - 18.30 Uhr
</p><p>Sa.: nach Vereinbarung</p></div>
</div>
</div>
</section></div>
<section class = "mbr-section extForm1 mbr-parallax-background" id = "extForm1-5m" data-rv-view = "470" style = "background-image: url(assets/images/folierung-836x576.jpg); padding-top: 50px; padding-bottom: 50px;">
<div class = "mbr-overlay" style = "opacity: 0.8; background-color: rgb(255, 255, 255);">
</div>
<div class = "mbr-table mbr-table-full">
<div class = "mbr-table-cell">
<div class = "container">
<div class = "row">
<div class = "mbr-table-md-up">
<!-- & -->
<div class = "mbr-table-cell col-md-7 text-xs-center text-md-left">
<h2 class = "display-2 h-black"><span style = "font-weight: normal;">Kontaktformular</span></h2>
<?php
if (isset($_POST['submit'])){
if (!$valid_recaptcha){
// error
?>
<div class = "col-md-12" style = "margin-left: 200px;" align = "center">ReCAPTCHA fehlgeschlagen, bitte versuchen Sie es erneut.</div><br />
<?php
}
}
?>
<div class = "col-md-12" style = "padding-left: 0px; padding-right: 0px;">
<?php if ($form_complete === FALSE): ?>
<form action = "formhandler.php" method = "post">
<div class = "col-xs-6">
<input type = "text" class = "form-control" name = "name" required data-form-field = "Name" placeholder = "Name*" value = "<?php echo isset($_POST['name'])? $_POST['name'] : ''; ?>" /><?php if (in_array('name', $validation)): ?><span class = "error"><?php echo $error_messages['name']; ?> </span><?php endif; ?>
</div>
<div class = "col-xs-6" style = "padding-left: 15px">
<input type = "text" class = "form-control" name = "email" required data-form-field = "Email" placeholder = "E-mail*" value = "<?php echo isset($_POST['email'])? $_POST['email'] : ''; ?>" /><?php if (in_array('email', $validation)): ?><span class = "error"><?php echo $error_messages['email']; ?> </span><?php endif; ?>
</div>
<div class = "col-xs-12">
<input type = "text" class = "form-control" name = "phone" required data-form-field = "Phone" placeholder = "Telefon*">
</div>
<div class = "col-xs-12">
<textarea class = "form-control" name = "message" rows = "7" data-form-field = "Message" style = "resize:none" placeholder = "Nachricht" value = "<?php echo isset($_POST['message'])? $_POST['message'] : ''; ?>" /><?php if (in_array('message', $validation)): ?><span class = "error"><?php echo $error_messages['message']; ?> </span><?php endif; ?></textarea>
</div>
<div class = "col-xs-12">
<label class = "lead">
<p><input style = "margin-bottom: 0;" type = "checkbox" name = "checkboxaccept" required value = "<?php echo isset($_POST['checkboxaccept'])? $_POST['checkboxaccept'] : ''; ?>" /><?php if (in_array('checkboxaccept', $validation)): ?><span class = "error"><?php echo $error_messages['checkboxaccept']; ?> </span><?php endif; ?>
<span style = "color: #1f008f;">*</span>Ich stimme zu, dass meine Angaben aus dem Kontaktformular zur Beant­wortung meiner Anfrage erhoben und verar­beitet werden. Die Daten werden nach abge­schlossener Bear­beitung Ihrer Anfrage gelöscht.</p>
<p><em>Hinweis: Sie können Ihre Einwilligung jederzeit für die Zukunft per E-Mail an <a href = "mailto:[email protected]" title = "[email protected]">[email protected]</a> widerrufen. Detaillierte Informationen zum Umgang mit Nutzerdaten finden Sie in unserer <a href = "datenschutz.php" target = "_blank" rel = "noopener noreferrer" title = "Datenschutzerklärung">Datenschutzerklärung</a>.</em></p></label>
</div>
<div class = "col-xs-12"><div class = "g-recaptcha" data-sitekey = "6Lc1TlwUAAAAAMxGXW7AEsy3w5asFtZKi8cvtuxL"></div></div>
<div class = "col-xs-12 buttons_wrap" style = "margin-top: 10px;"><button type = "submit" class = "btn btn-primary">Nachricht senden</button></div>
</form>
<?php else: ?>
<div class = "row">
<div class = "col-md-12 parent">
<div class = "col-md-12 col-lg-12" style = "padding: 0;">
<div class = "intro-box right" style = "margin: 10px 0;">
<div class = "content alert alert-success" style = "padding: 10px 10px 10px 10px;">
<h4 class = "text-right mbr-editable-content">Vielen Dank für Ihre Nachricht!</h4>
<p class = "mbr-section-text lead mbr-editable-content">Wir werden uns umgehend bei Ihnen melden.</p>
</div>
</div>
</div>
</div>
</div>
<!--<script type = "text/javascript">
setTimeout('ourRedirect()',5000)
function ourRedirect(){
location.href='http://web6.server.inventmedia.de/ec/kontakt.php'
}
</script>-->
<?php endif; ?>
</div>
</div>
<div class = "mbr-table mbr-valign-top col-md-5">
<div class = "mbr-figure"><img src = "assets/images/mirko-1000x961.jpg" class = "img-thumbnail central-image"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class = "mbr-section mbr-section-nopadding" id = "map1-51" data-rv-view = "480">
<div class = "mbr-map"><iframe frameborder = "0" style = "border:0" src = "https://www.google.com/maps/embed/v1/place?key=xxx&q=place_id:ChIJ8TAx5OdQqEcRUK_4PR7srUk" allowfullscreen = ""></iframe></div>
</section>
<section class = "mbr-slider mbr-section mbr-section-nopadding carousel slide extTestimonials1 extTestimonials3 extTestimonials5" data-ride = "carousel" data-keyboard = "false" data-wrap = "true" data-interval = "5000" data-pause = "false" id = "extTestimonials5-3k" data-rv-view = "482" style = "background-color: rgb(255, 255, 255); padding-top: 0px; padding-bottom: 0px;">
<div class = "mbr-section__container mbr-section__container--middle">
<div class = "container">
<div class = "row">
<div class = "col-xs-12 text-xs-center">
</div>
</div>
</div>
</div>
<div class = "container boxed-slider">
<div>
<div class = "carousel-inner" role = "listbox" data-visible = "6">
<div class = "carousel-item active">
<div class = "row">
<div class = "col-md-12">
<div class = "wrap-img"><a href = "http://www.bastuck.de/"><img src = "assets/images/bastuck-226x118.png" alt = "Bastuck" title = "Bastuck"></a></div>
</div>
</div>
</div><div class = "carousel-item">
<div class = "row">
<div class = "col-md-12">
<div class = "wrap-img"><a href = "http://www.barracuda-wheels.com/"><img src = "assets/images/barracuda-226x118.png" alt = "Barracuda" title = "Barracuda"></a></div>
</div>
</div>
</div><div class = "carousel-item">
<div class = "row">
<div class = "col-md-12">
<div class = "wrap-img"><a href = "http://www.bbs.com/"><img src = "assets/images/bbs-226x118.png" alt = "BBS" title = "BBS"></a></div>
</div>
</div>
</div><div class = "carousel-item">
<div class = "row">
<div class = "col-md-12">
<div class = "wrap-img"><a href = "http://www.breyton.de/germany/index.php"><img src = "assets/images/breyton-226x118.png" alt = "Breyton" title = "Breyton"></a></div>
</div>
</div>
</div><div class = "carousel-item">
<div class = "row">
<div class = "col-md-12">
<div class = "wrap-img"><a href = "http://www.oz-racing.de/"><img src = "assets/images/oz-226x118.png" alt = "OZ Racing" title = "OZ Racing"></a></div>
</div>
</div>
</div><div class = "carousel-item">
<div class = "row">
<div class = "col-md-12">
<div class = "wrap-img"><a href = "http://www.h-r.com/" target = "_blank"><img src = "assets/images/hr-226x118.png" alt = "H&R" title = "H&R"></a></div>
</div>
</div>
</div><div class = "carousel-item">
<div class = "row">
<div class = "col-md-12">
<div class = "wrap-img"><a href = "http://www.knfilters.com/"><img src = "assets/images/kn-226x118.png" alt = "K&N" title = "K&N"></a></div>
</div>
</div>
</div><div class = "carousel-item">
<div class = "row">
<div class = "col-md-12">
<div class = "wrap-img"><a href = "http://www.lowtec.de/"><img src = "assets/images/lowtec-226x118.png" alt = "Lowtec" title = "Lowtec"></a></div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class = "mbr-section mbr-section-md-padding mbr-footer footer1" id = "contacts1-3l" data-rv-view = "510" style = "background-color: rgb(34, 34, 34); padding-top: 90px; padding-bottom: 90px;">
<div class = "container">
<div class = "row">
<div class = "mbr-footer-content col-xs-12 col-md-3">
<div><img src = "assets/images/ec-parts-logo-big-128x165.png" alt = "ec - exclusive carparts Berlin" title = "ec - exclusive carparts Berlin"></div>
</div>
<div class = "mbr-footer-content col-xs-12 col-md-3">
<p><strong>EC-Parts</strong><br>
<a href = "index.php" class = "text-info">Startseite</a><br>
<a href = "kontakt.php" class = "text-info">Kontakt</a><br><a href = "datenschutz.php" class = "text-info">Datenschutz</a><br><a href = "impressum.php" class = "text-info">Impressum</a></p>
</div>
<div class = "mbr-footer-content col-xs-12 col-md-3">
<p><strong>Kontakt</strong><br>
Email: <a href = "mailto:[email protected]" class = "text-info">[email protected]</a><br>
Fon: +49 (0) 30 36 40 67 36<br>
Fax: +49 (0) 30 36 40 67 35<br><br>
Öffnungszeiten:
<br>Mo. - Fr.: 10 Uhr - 18.30 Uhr
<br>Sa.: nach Vereinbarung<br></p>
</div>
<div class = "mbr-footer-content col-xs-12 col-md-3">
<p><strong>Anschrift</strong><a class = "text-info" href = "https://mobirise.com/"><br></a>ec exclusive carparts Berlin Autotuning<br>
Blücherstrasse 60<br>10961 Berlin<br></p>
</div>
</div>
</div>
</section>
<script src = "assets/web/assets/jquery/jquery.min.js"></script>
<script src = "assets/tether/tether.min.js"></script>
<script src = "assets/bootstrap/js/bootstrap.min.js"></script>
<script src = "assets/smooth-scroll/smooth-scroll.js"></script>
<script src = "assets/touch-swipe/jquery.touch-swipe.min.js"></script>
<script src = "assets/jarallax/jarallax.js"></script>
<script src = "assets/bootstrap-carousel-swipe/bootstrap-carousel-swipe.js"></script>
<script src = "assets/dropdown/js/script.min.js"></script>
<script src = "assets/theme/js/script.js"></script>
<script src = "assets/mobirise3-blocks-plugin/js/script.js"></script>
<div id = "scrollToTop" class = "scrollToTop mbr-arrow-up"><a style = "text-align: center;"><i class = "mbr-arrow-up-icon"></i></a></div>
</body>
</html>
Я не уверен, почему это не работает. Я пытался скопировать весь код шаг за шагом. Я вижу сообщение об успешном выполнении, но форма отсутствует.
Куда именно это поставить?
в чем ошибка?
Я могу только сказать, что делает страница, а не код внутри файла. У меня только пустая страница.
Я обнаружил аналогичную проблему с проверкой ReCaptcha ссылка на сайт. Может быть, код там пригодится для моего php файла. Все еще тестирую.
Я не вижу, где ошибка. Он не отправляет никаких сообщений (успешных или неудачных).






поместите var_dump () и проверьте, в какой момент код работает