Hallo,
bei einer alten Webseite, die ich noch bis Ende des Jahres betreue, muss ich ein reCaptcha einbauen, damit der Hoster aufgrund von Spam die PHP-Mail-Funktion wieder freigibt. Das ist jetzt (angeblich) auch passiert, da die reCaptcha-Überprüfung selbst funktioniert.
Edit: Nach Rücksprache des Hosters ist die Funktion definitiv wieder aktiviert: "Die Serveradministratoren haben die PHP-mail()-Funktion wieder aktiviert." Daran kann es also nicht liegen, dass das Formular-Absenden nicht funktioniert.
Eigentlich bin ich schon zu lange aus dem Thema PHP draußen. Mit etwas Hilfe habe ich es nun hinbekommen. Bis jetzt. Ich komme leider nicht weiter. Vielleicht kann mir jemand von euch weiterhelfen?
bei einer alten Webseite, die ich noch bis Ende des Jahres betreue, muss ich ein reCaptcha einbauen, damit der Hoster aufgrund von Spam die PHP-Mail-Funktion wieder freigibt. Das ist jetzt (angeblich) auch passiert, da die reCaptcha-Überprüfung selbst funktioniert.
Edit: Nach Rücksprache des Hosters ist die Funktion definitiv wieder aktiviert: "Die Serveradministratoren haben die PHP-mail()-Funktion wieder aktiviert." Daran kann es also nicht liegen, dass das Formular-Absenden nicht funktioniert.
Eigentlich bin ich schon zu lange aus dem Thema PHP draußen. Mit etwas Hilfe habe ich es nun hinbekommen. Bis jetzt. Ich komme leider nicht weiter. Vielleicht kann mir jemand von euch weiterhelfen?
- Die Überprüfung der einzelnen Felder funktioniert augenscheinlich. Zumindest werden etwaige gewollte Fehlermeldungen angezeigt.
- Wenn man ohne das reCaptcha zu nutzen absenden möchte, werden dennoch keine Fehlermeldungen vom reCaptcha angezeigt. Aber die Seite "ruckelt" dann nur kurz. An der Seite selbst ändert sich sonst nichts.
- Wenn man das Formular mit genutztem reCaptcha absenden möchte, funktioniert dessen Prüfung, aber beim Absenden passiert auch hier nichts. Wieder nur besagter "Ruckler". Es wird weder die E-Mail aus dem Formular abgesendet, noch wird man auf die "versendet.html" weitergeleitet.
Anbei das Kontaktformular. Aus Datenschutzgründen habe ich hoffentlich alle entsprechenden Informationen entfernt.
Aufgrund der begrenzten Zeichenlänger hier erst einmal der PHP-Teil des Formulars:
PHP-Code:<?php
// Angaben anpassen
$to_email='test@example.com'; //Die Zieladresse
$mail_success='./versendet.html'; // Pfad zu einer Bestätigungsseite, wenn die Mail erfolgreich versendet wurde.
$error=false;
// Formular-Variablen Deklarierung und Initialisierung
$plz_error="";
$vorname_error="";
$name_error="";
$telefon_error="";
$telefax_error="";
$strasse_error="";
$ort_error="";
$email_error="";
$betreff_error="";
$nachricht_error="";
// Hier werden alle Pflichtfelder festgelegt. Diese Felder dürfen nicht leer bleiben.
$pflicht[]='name';
$pflicht[]='telefon';
$pflicht[]='nachricht';
$absendezeit = date('h-i-s, j-m-y');
if($_POST)
{
// prüfen, ob eines der Pflichtfelder leer ist
foreach($pflicht AS $key => $result)
{
if(!$_POST[$result])
{
${$pflicht[$key].'_error'}='Bitte ausfüllen';
$error=true;
}
}
// Prüfung der PLZ
$pattern_plz="/^[0-9]{5}$/";
if(!preg_match($pattern_plz,$_POST['plz']) && $_POST['plz']!='')
{
$plz_error='falsches Plz Format';
$error=true;
}
// Prüfung der Telefonnummer
$pattern_tel="/^[0-9-()\/+.]*$/";
if(!preg_match($pattern_tel,$_POST['telefon']) && $_POST['telefon']!='')
{
$telefon_error='falsches Format';
$error=true;
}
// Prüfung der Faxnummer
$pattern_fax="/^[0-9-()\/+.]*$/";
if(!preg_match($pattern_fax,$_POST['telefax']) && $_POST['telefax']!='')
{
$telefax_error=' falsches Format';
$error=true;
}
// Prüfung recaptchar
// Prüfung recaptchar
$captcha=(isset($_POST["captcha"]) ? $_POST['captcha'] : '');
$secret="MeinGeheimerSchluessel";
//Recaptcha verification and JSON response decode
$verify=json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$captcha), true);
$error=!$verify["success"];
if (isset($response) && $response->success) {
// Wenn keine Fehler vorhanden, dann kann die Mail versendet werden
if(!$error)
{
$from_name="{$_POST['vorname']} {$_POST['name']}";
$from_email=($_POST['email']!='') ? $_POST['email'] : $to_email;
$headers = "X-Sender: $from_name<$from_email>\n";
$headers .= "X-Mailer: $from_name powered by BWAT\n";
$headers .= "Return-Path: <$from_email>\n";
$headers .= "Date: ". date('r'). "\n";
$headers .= "From: $from_email \n";
$headers .= "Sender: $from_email\n";
$headers .= "Reply-To: $from_email\n";
$headers .= "Organization: BWAT\n";
$headers .= "X-MSMail-Priority: Normal\n";
$headers .= "Content-Type: text/plain\n";
$comment = $from_name.' aus '.$_POST['plz'].' '.$_POST['ort'].' hat folgende Anfrage gesendet:'."\n\n";
$comment .= "Absendezeit: ".$absendezeit. "\n\n";
$comment .= "Anrede: ";
$comment .= $_POST['anrede']."\n";
$comment .= "Vorname: ";
$comment .= $_POST['vorname']."\n";
$comment .= "Name: ";
$comment .= $_POST['name']."\n";
$comment .= "Straße: ";
$comment .= $_POST['straße']."\n";
$comment .= "Plz: ";
$comment .= $_POST['plz']." ";
$comment .= "Ort: ";
$comment .= $_POST['ort']."\n";
$comment .= "Telefon: ";
$comment .= $_POST['telefon']."\n";
$comment .= "Telefax: ";
$comment .= $_POST['telefax']."\n";
$comment .= "E-Mail: ";
$comment .= $_POST['email']."\n";
$comment .= "Betreff: ";
$comment .= $_POST['betreff']."\n\n";
$comment .= "Nachricht:\n";
$comment .= $_POST['nachricht'];
// Inhalte für den Besucher
$comment2 = "Herzlichen Dank für Ihr Interesse an BWAT.\n\nDie nachfolgende Nachricht wurde erfolgreich an uns zugestellt.\n\nIhre Nachricht:\n";
$comment2 .= $_POST['nachricht']."\n\n";
$comment2 .= "Wir werden uns schnellstmöglich mit Ihnen in Verbindung setzen.\n";
$comment2 .= "Ihr BWAT\n\n";
$comment2 .= "==========================================================\n\n";
$comment2 .= "BWAT\n\n";
$comment2 .= "Musterstr. 1\n";
$comment2 .= "00815 Musterhausen\n\n";
$comment2 .= "Telefon: 0151515\n";
$comment2 .= "Telefax: 545646\n";
$comment2 .= "E-Mail: test@example.com\n";
$comment2 .= "Internet: www.example.com";
$check_send=mail($to_email,$_POST['betreff'],$comment,$headers);
if($check_send==true && $from_email!='')
{
if($from_email!='' && $from_email!=$to_email) @mail($from_email,$_POST['betreff'],$comment2,$headers);
header("LOCATION: $mail_success");
}
}
} else {}
}
?>
Kommentar