PHP Kontaktformular verlinkt nicht
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abarbeiten
browser
code
datum
ende
entfernen
erstellen
feedback
header
http
konfiguration
kontakt
korrektur
merken
post
reihe
senden
text
url
versenden
-
Hallo,
ich bin Neuling zum Thema PHP und habe mir ein Script aus dem WWW für meine Homepage heruntergeladen und angepasst. Leider funktioniert das ganze nicht. Ich möchte gerne im Fehlerfall und Gutfall beim Absender der Mail eine neue Seite verlinken. Komme dann aber beim Test auf eine weisse Seite !? Der Versand klappt einwandfrei, nur leider geht es dann nicht auf die entsprechenden Seiten.
Die entsprechenden Seiten habe ich kopiert und im Browser getestet. Leider verlinkt das Script nicht dorthin.
Hier der Code mit Hoffnung das Jemand mir unter die Arme greifen kann. Oder sind die Befehle vllt nicht erlaubt? Vielen Dank im voraus.
<?php // ======= Konfiguration: $mailTo = 'vitesse-kaefer@gmx.de'; $mailFrom = '"FormMailer" <infomailer@gmx.de>'; $mailSubject = 'Feedback Vitesse-Kaefer Homepage'; $returnPage = 'http://bugcatcher.lima-city.de/sides/99-kontakt/versand_ok.html'; $returnErrorPage = 'http://bugcatcher.lima-city.de/sides/99-kontakt/versand_error.html'; $mailText = ""; // ======= Text der Mail aus den Formularfeldern erstellen: // Wenn Daten mit method="post" versendet wurden: if(isset($_POST)) { // alle Formularfelder der Reihe nach durchgehen: foreach($_POST as $name => $value) { // Wenn der Feldwert aus mehreren Werten besteht: // (z.B. <select multiple>) if(is_array($value)) { // "Feldname:" und Zeilenumbruch dem Mailtext hinzufügen $mailText .= $name . ":\n"; // alle Werte des Feldes abarbeiten foreach($valueArray as $entry) { // Einrückungsleerzeichen, Wert und Zeilenumbruch // dem Mailtext hinzufügen $mailText .= " " . $value . "\n"; } // ENDE: foreach } // ENDE: if // Wenn der Feldwert ein einzelner Feldwert ist: else { // "Feldname:", Wert und Zeilenumbruch dem Mailtext hinzufügen $mailText .= $name . ": " . $value . "\n"; } // ENDE: else } // ENDE: foreach } // if // ======= Korrekturen vor dem Mailversand // Wenn PHP "Magic Quotes" vor Apostrophzeichen einfügt: if(get_magic_quotes_gpc()) { // eventuell eingefügte Backslashes entfernen $mailtext = stripslashes($mailtext); } // ======= Mailversand // Mail versenden und Versanderfolg merken $mailSent = @mail($mailTo, $mailSubject, $mailText, "From: ".$mailFrom); // ======= Return-Seite an den Browser senden // Wenn der Mailversand erfolgreich war: if($mailSent == TRUE) { // Seite "Formular verarbeitet" senden: header("Location: " . $returnPage); } // Wenn die Mail nicht versendet werden konnte: else { // Seite "Fehler aufgetreten" senden: header("Location: " . $returnErrorPage); } // ======= Ende exit(); ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich finde gerade keinen Fehler. Aber könntest du mal anstatt dem header im if und else ein einfaches echo 'Versendet'; oder echo 'Error'; anhängen?
Beitrag zuletzt geändert: 14.1.2014 17:54:06 von c143 -
Hallo,
habe das Script abgeändert und das echo wird ausgegeben. Dann nochmal alles mit und ohne Firewall und Addons bei Firefox sowie mit IE ausprobiert. Soweit klappt es, aber ich hätte es gern verlinkt auf Seiten und nicht eine reine Ausgabe?
Hier nochmal die Änderung:
<?php // ======= Konfiguration: $mailTo = 'vitesse-kaefer@gmx.de'; $mailFrom = '"FormMailer" <infomailer@gmx.de>'; $mailSubject = 'Feedback Vitesse-Kaefer Homepage'; $returnPage = 'http://bugcatcher.lima-city.de/sides/99-kontakt/versand_ok.html'; $returnErrorPage = 'http://bugcatcher.lima-city.de/sides/99-kontakt/versand_error.html'; $mailText = ""; // ======= Text der Mail aus den Formularfeldern erstellen: // Wenn Daten mit method="post" versendet wurden: if(isset($_POST)) { // alle Formularfelder der Reihe nach durchgehen: foreach($_POST as $name => $value) { // Wenn der Feldwert aus mehreren Werten besteht: // (z.B. <select multiple>) if(is_array($value)) { // "Feldname:" und Zeilenumbruch dem Mailtext hinzufügen $mailText .= $name . ":\n"; // alle Werte des Feldes abarbeiten foreach($valueArray as $entry) { // Einrückungsleerzeichen, Wert und Zeilenumbruch // dem Mailtext hinzufügen $mailText .= " " . $value . "\n"; } // ENDE: foreach } // ENDE: if // Wenn der Feldwert ein einzelner Feldwert ist: else { // "Feldname:", Wert und Zeilenumbruch dem Mailtext hinzufügen $mailText .= $name . ": " . $value . "\n"; } // ENDE: else } // ENDE: foreach } // if // ======= Korrekturen vor dem Mailversand // Wenn PHP "Magic Quotes" vor Apostrophzeichen einfügt: if(get_magic_quotes_gpc()) { // eventuell eingefügte Backslashes entfernen $mailtext = stripslashes($mailtext); } // ======= Mailversand // Mail versenden und Versanderfolg merken $mailSent = @mail($mailTo, $mailSubject, $mailText, "From: ".$mailFrom); // ======= Return-Seite an den Browser senden // Wenn der Mailversand erfolgreich war: if($mailSent == TRUE) { // Seite "Formular verarbeitet" senden: echo 'Versendet'; } // Wenn die Mail nicht versendet werden konnte: else { // Seite "Fehler aufgetreten" senden: echo 'error'; } // ======= Ende exit(); ?>
-
bugcatcher schrieb:
Hallo,
habe das Script abgeändert und das echo wird ausgegeben. Dann nochmal alles mit und ohne Firewall und Addons bei Firefox sowie mit IE ausprobiert. Soweit klappt es, aber ich hätte es gern verlinkt auf Seiten und nicht eine reine Ausgabe?
Hier nochmal die Änderung:
<?php // ======= Konfiguration: $mailTo = 'vitesse-kaefer@gmx.de'; $mailFrom = '"FormMailer" <infomailer@gmx.de>'; $mailSubject = 'Feedback Vitesse-Kaefer Homepage'; $returnPage = 'http://bugcatcher.lima-city.de/sides/99-kontakt/versand_ok.html'; $returnErrorPage = 'http://bugcatcher.lima-city.de/sides/99-kontakt/versand_error.html'; $mailText = ""; // ======= Text der Mail aus den Formularfeldern erstellen: // Wenn Daten mit method="post" versendet wurden: if(isset($_POST)) { // alle Formularfelder der Reihe nach durchgehen: foreach($_POST as $name => $value) { // Wenn der Feldwert aus mehreren Werten besteht: // (z.B. <select multiple>) if(is_array($value)) { // "Feldname:" und Zeilenumbruch dem Mailtext hinzufügen $mailText .= $name . ":\n"; // alle Werte des Feldes abarbeiten foreach($valueArray as $entry) { // Einrückungsleerzeichen, Wert und Zeilenumbruch // dem Mailtext hinzufügen $mailText .= " " . $value . "\n"; } // ENDE: foreach } // ENDE: if // Wenn der Feldwert ein einzelner Feldwert ist: else { // "Feldname:", Wert und Zeilenumbruch dem Mailtext hinzufügen $mailText .= $name . ": " . $value . "\n"; } // ENDE: else } // ENDE: foreach } // if // ======= Korrekturen vor dem Mailversand // Wenn PHP "Magic Quotes" vor Apostrophzeichen einfügt: if(get_magic_quotes_gpc()) { // eventuell eingefügte Backslashes entfernen $mailtext = stripslashes($mailtext); } // ======= Mailversand // Mail versenden und Versanderfolg merken $mailSent = @mail($mailTo, $mailSubject, $mailText, "From: ".$mailFrom); // ======= Return-Seite an den Browser senden // Wenn der Mailversand erfolgreich war: if($mailSent == TRUE) { // Seite "Formular verarbeitet" senden: echo 'Versendet'; } // Wenn die Mail nicht versendet werden konnte: else { // Seite "Fehler aufgetreten" senden: echo 'error'; } // ======= Ende exit(); ?>
Scheint an der Variable im Header zu liegen, so funktionierts bei mir auch nicht.
if($mailSent == TRUE) { header("Location: http://bugcatcher.lima-city.de/sides/99-kontakt/versand_ok.html"); }else { header("Location: http://bugcatcher.lima-city.de/sides/99-kontakt/versand_error.html"); }
Und dann kannst du $returnPage und $returnErrorPage löschen.
Falls das für dich so ok ist, ausser du willst die Variabeln umbedingt oben definieren.
EDIT: header('Location: '.$returnPage); also mit singlequotes anstatt " " funktioniert bei mir auch. Ist aber komisch, dass es sonst nicht funkioniert, ich kann mir echt nicht erklären warum.
Beitrag zuletzt geändert: 14.1.2014 18:37:50 von c143 -
Hi, vielen Dank für den Einsatz, aber das steckt wohl der Teufel drin.
So steht nun der Code online: (Leider funktioniert es immer noch nicht)
<?php // ======= Konfiguration: $mailTo = 'vitesse-kaefer@gmx.de'; $mailFrom = '"FormMailer" <infomailer@gmx.de>'; $mailSubject = 'Feedback Vitesse-Kaefer Homepage'; $mailText = ""; // ======= Text der Mail aus den Formularfeldern erstellen: // Wenn Daten mit method="post" versendet wurden: if(isset($_POST)) { // alle Formularfelder der Reihe nach durchgehen: foreach($_POST as $name => $value) { // Wenn der Feldwert aus mehreren Werten besteht: // (z.B. <select multiple>) if(is_array($value)) { // "Feldname:" und Zeilenumbruch dem Mailtext hinzufügen $mailText .= $name . ":\n"; // alle Werte des Feldes abarbeiten foreach($valueArray as $entry) { // Einrückungsleerzeichen, Wert und Zeilenumbruch // dem Mailtext hinzufügen $mailText .= " " . $value . "\n"; } // ENDE: foreach } // ENDE: if // Wenn der Feldwert ein einzelner Feldwert ist: else { // "Feldname:", Wert und Zeilenumbruch dem Mailtext hinzufügen $mailText .= $name . ": " . $value . "\n"; } // ENDE: else } // ENDE: foreach } // if // ======= Korrekturen vor dem Mailversand // Wenn PHP "Magic Quotes" vor Apostrophzeichen einfügt: if(get_magic_quotes_gpc()) { // eventuell eingefügte Backslashes entfernen $mailtext = stripslashes($mailtext); } // ======= Mailversand // Mail versenden und Versanderfolg merken $mailSent = @mail($mailTo, $mailSubject, $mailText, "From: ".$mailFrom); // ======= Return-Seite an den Browser senden // Wenn der Mailversand erfolgreich war: if($mailSent == TRUE) { header("Location: http://bugcatcher.lima-city.de/sides/99-kontakt/versand_ok.html"); } // Wenn die Mail nicht versendet werden konnte: else { header("Location: http://bugcatcher.lima-city.de/sides/99-kontakt/versand_error.html"); } // ======= Ende exit(); ?>
-
c143 schrieb:
EDIT: header('Location: '.$returnPage); also mit singlequotes anstatt " " funktioniert bei mir auch. Ist aber komisch, dass es sonst nicht funkioniert, ich kann mir echt nicht erklären warum.
Haste wohl nicht mehr gelesen. -
Ja, sorry. Hab ich abgeändert. Ist aber das gleiche Phänomen. Gibt es irgendwo mal ein auf lima-city getestetes Kontakt-Formuar Script mit Verlinkung im gut/böse Fall? Hänge nicht unbedingt an diesem hier, aber hab es zumindest HTML mässig vom Formular her in den Griff bekommen.
Hier noch mal die korrigierte Version:
<?php // ======= Konfiguration: $mailTo = 'vitesse-kaefer@gmx.de'; $mailFrom = '"FormMailer" <infomailer@gmx.de>'; $mailSubject = 'Feedback Vitesse-Kaefer Homepage'; $mailText = ""; // ======= Text der Mail aus den Formularfeldern erstellen: // Wenn Daten mit method="post" versendet wurden: if(isset($_POST)) { // alle Formularfelder der Reihe nach durchgehen: foreach($_POST as $name => $value) { // Wenn der Feldwert aus mehreren Werten besteht: // (z.B. <select multiple>) if(is_array($value)) { // "Feldname:" und Zeilenumbruch dem Mailtext hinzufügen $mailText .= $name . ":\n"; // alle Werte des Feldes abarbeiten foreach($valueArray as $entry) { // Einrückungsleerzeichen, Wert und Zeilenumbruch // dem Mailtext hinzufügen $mailText .= " " . $value . "\n"; } // ENDE: foreach } // ENDE: if // Wenn der Feldwert ein einzelner Feldwert ist: else { // "Feldname:", Wert und Zeilenumbruch dem Mailtext hinzufügen $mailText .= $name . ": " . $value . "\n"; } // ENDE: else } // ENDE: foreach } // if // ======= Korrekturen vor dem Mailversand // Wenn PHP "Magic Quotes" vor Apostrophzeichen einfügt: if(get_magic_quotes_gpc()) { // eventuell eingefügte Backslashes entfernen $mailtext = stripslashes($mailtext); } // ======= Mailversand // Mail versenden und Versanderfolg merken $mailSent = @mail($mailTo, $mailSubject, $mailText, "From: ".$mailFrom); // ======= Return-Seite an den Browser senden // Wenn der Mailversand erfolgreich war: if($mailSent == TRUE) { header('Location: http://bugcatcher.lima-city.de/sides/99-kontakt/versand_ok.html'); } // Wenn die Mail nicht versendet werden konnte: else { header('Location: http://bugcatcher.lima-city.de/sides/99-kontakt/versand_error.html'); } // ======= Ende exit(); ?>
-
bugcatcher schrieb:
Ja, sorry. Hab ich abgeändert. Ist aber das gleiche Phänomen. Gibt es irgendwo mal ein auf lima-city getestetes Kontakt-Formuar Script mit Verlinkung im gut/böse Fall? Hänge nicht unbedingt an diesem hier, aber hab es zumindest HTML mässig vom Formular her in den Griff bekommen.
Hier noch mal die korrigierte Version:
<?php // ======= Konfiguration: $mailTo = 'vitesse-kaefer@gmx.de'; $mailFrom = '"FormMailer" <infomailer@gmx.de>'; $mailSubject = 'Feedback Vitesse-Kaefer Homepage'; $mailText = ""; // ======= Text der Mail aus den Formularfeldern erstellen: // Wenn Daten mit method="post" versendet wurden: if(isset($_POST)) { // alle Formularfelder der Reihe nach durchgehen: foreach($_POST as $name => $value) { // Wenn der Feldwert aus mehreren Werten besteht: // (z.B. <select multiple>) if(is_array($value)) { // "Feldname:" und Zeilenumbruch dem Mailtext hinzufügen $mailText .= $name . ":\n"; // alle Werte des Feldes abarbeiten foreach($valueArray as $entry) { // Einrückungsleerzeichen, Wert und Zeilenumbruch // dem Mailtext hinzufügen $mailText .= " " . $value . "\n"; } // ENDE: foreach } // ENDE: if // Wenn der Feldwert ein einzelner Feldwert ist: else { // "Feldname:", Wert und Zeilenumbruch dem Mailtext hinzufügen $mailText .= $name . ": " . $value . "\n"; } // ENDE: else } // ENDE: foreach } // if // ======= Korrekturen vor dem Mailversand // Wenn PHP "Magic Quotes" vor Apostrophzeichen einfügt: if(get_magic_quotes_gpc()) { // eventuell eingefügte Backslashes entfernen $mailtext = stripslashes($mailtext); } // ======= Mailversand // Mail versenden und Versanderfolg merken $mailSent = @mail($mailTo, $mailSubject, $mailText, "From: ".$mailFrom); // ======= Return-Seite an den Browser senden // Wenn der Mailversand erfolgreich war: if($mailSent == TRUE) { header('Location: http://bugcatcher.lima-city.de/sides/99-kontakt/versand_ok.html'); } // Wenn die Mail nicht versendet werden konnte: else { header('Location: http://bugcatcher.lima-city.de/sides/99-kontakt/versand_error.html'); } // ======= Ende exit(); ?>
Der test mit dem echo vorhin war dazu da, zu sehen ob das script so weit kommt und dein header also nur nicht ausgeführt wird. Ich habe das ganze script nicht getestet, aber dein header mit deinen Variabeln hat so nicht funktioniert, mit single quotes und mit der ersten Lösung aber schon.
Also wenn das echo auch ausgeführt wurde, was es ja getan hat, dann kommt das Script auch bei der if abfrage zum header, nur der klappt nicht. Kann mir echt nicht erklären was bei dir falsch läuft. Kontakt forumulare findest du aber genug, wenn du googelst. Aber ich würd dir empfehlen, selbst eins zu machen, ist ganz einfach. Dann lernst du auch ein bisschen PHP. -
Ja, vielen Dank für die Hilfe. Programmieren macht zwar Spass, aber leider habe ich nicht genug Zeit, um mich wirklich intensiv in PHP rein zu knien. HTML mit CSS reicht mir da eigentlich schon. Habe den Verdacht, dass der Server das Verlinken blockt. Wäre es sinnvoll nochmal ein Ticket über den Support zu eröffnen? Bin eigentlich schon so gut wie fertig mit der Homepage. Finde so ein Kontaktformular rundet die Sache noch ab. Aber wenn es nur halb funktioniert, schwindet bei mir die Freude am Weiterbau.Vielleicht findet sich ja noch jemand im Forum, der ein ähnliches Script ans laufen gebracht hat.
cu
Bugcatcher -
Ich habe etwas ähnliches, allerdings mit meinem Design drin.
Aber Versuch mal:
header('Location: http://bugcatcher.lima-city.de/sides/99-kontakt/versand_error.html');
In zu ändern:
header('Location: versand_error.html');
Natürlich musst du den Pfad entsprechend anpassen von dem Script aus gesehen. -
bugcatcher schrieb:
Ja, vielen Dank für die Hilfe. Programmieren macht zwar Spass, aber leider habe ich nicht genug Zeit, um mich wirklich intensiv in PHP rein zu knien. HTML mit CSS reicht mir da eigentlich schon. Habe den Verdacht, dass der Server das Verlinken blockt. Wäre es sinnvoll nochmal ein Ticket über den Support zu eröffnen? Bin eigentlich schon so gut wie fertig mit der Homepage. Finde so ein Kontaktformular rundet die Sache noch ab. Aber wenn es nur halb funktioniert, schwindet bei mir die Freude am Weiterbau.Vielleicht findet sich ja noch jemand im Forum, der ein ähnliches Script ans laufen gebracht hat.
cu
Bugcatcher
<?php $returnPage = 'http://bugcatcher.lima-city.de/sides/99-kontakt/versand_ok.html'; header("Location: ".$returnPage); ?>
http://c143.lima-city.de/header
Habs vorhin auf dem localhost getestet, aber jetzt noch auf Lima, funktioniert sogar mit deiner ersten Methode.
Beitrag zuletzt geändert: 14.1.2014 19:33:36 von c143 -
all-in1 schrieb:
Ich habe etwas ähnliches, allerdings mit meinem Design drin.
Aber Versuch mal:
header('Location: http://bugcatcher.lima-city.de/sides/99-kontakt/versand_error.html');
In zu ändern:
header('Location: versand_error.html');
Natürlich musst du den Pfad entsprechend anpassen von dem Script aus gesehen.
Okay,
also das hatte ich schon versucht. Die beiden HTML Dateien liegen im gleichen Ordner wie die PHP Datei.
Oder muss ich da etwas anderes noch angeben? Versuche es gleich aber nochmal. Hoffentlich habe ich heute noch ein paar Mails frei. Bis gleich
Bugcatcher -
bugcatcher schrieb:
all-in1 schrieb:
Ich habe etwas ähnliches, allerdings mit meinem Design drin.
Aber Versuch mal:
header('Location: http://bugcatcher.lima-city.de/sides/99-kontakt/versand_error.html');
In zu ändern:
header('Location: versand_error.html');
Natürlich musst du den Pfad entsprechend anpassen von dem Script aus gesehen.
Okay,
also das hatte ich schon versucht. Die beiden HTML Dateien liegen im gleichen Ordner wie die PHP Datei.
Oder muss ich da etwas anderes noch angeben? Versuche es gleich aber nochmal. Hoffentlich habe ich heute noch ein paar Mails frei. Bis gleich
Bugcatcher
Das mit dem HTML Forumular klappt schon. Die php Datei wird geöffnet und du sagst ja auch das mail wird versendet. Das ganze script funktioniert eigentlich perfekt nur passiert bei dir beim header einfach nichts.
<?php // ======= Konfiguration: $mailTo = 'vitesse-kaefer@gmx.de'; $mailFrom = '"FormMailer" <infomailer@gmx.de>'; $mailSubject = 'Feedback Vitesse-Kaefer Homepage'; $mailText = ""; // ======= Text der Mail aus den Formularfeldern erstellen: // Wenn Daten mit method="post" versendet wurden: if(isset($_POST)) { // alle Formularfelder der Reihe nach durchgehen: foreach($_POST as $name => $value) { // Wenn der Feldwert aus mehreren Werten besteht: // (z.B. <select multiple>) if(is_array($value)) { // "Feldname:" und Zeilenumbruch dem Mailtext hinzufügen $mailText .= $name . ":\n"; // alle Werte des Feldes abarbeiten foreach($valueArray as $entry) { // Einrückungsleerzeichen, Wert und Zeilenumbruch // dem Mailtext hinzufügen $mailText .= " " . $value . "\n"; } // ENDE: foreach } // ENDE: if // Wenn der Feldwert ein einzelner Feldwert ist: else { // "Feldname:", Wert und Zeilenumbruch dem Mailtext hinzufügen $mailText .= $name . ": " . $value . "\n"; } // ENDE: else } // ENDE: foreach } // if // ======= Korrekturen vor dem Mailversand // Wenn PHP "Magic Quotes" vor Apostrophzeichen einfügt: if(get_magic_quotes_gpc()) { // eventuell eingefügte Backslashes entfernen $mailtext = stripslashes($mailtext); } // ======= Mailversand // Mail versenden und Versanderfolg merken $mailSent = @mail($mailTo, $mailSubject, $mailText, "From: ".$mailFrom); // ======= Return-Seite an den Browser senden // Wenn der Mailversand erfolgreich war: if($mailSent == TRUE) { // Seite "Formular verarbeitet" senden: header("Location: http://bugcatcher.lima-city.de/sides/99-kontakt/versand_ok.html"); echo 'TestEcho: OK'; } // Wenn die Mail nicht versendet werden konnte: else { // Seite "Fehler aufgetreten" senden: header("Location: http://bugcatcher.lima-city.de/sides/99-kontakt/versand_error.html"); echo 'TestEcho: Error'; } // ======= Ende exit(); ?>
Wenn das nicht funktioniert schreibst du am besten ein Ticket, dass bei dir keine Weiterleitung in PHP funkioniert. -
Okay, vielen Dank nochmal an Euch Beide. Werde mich morgen mal um das Ticket kümmern. Jetzt geht es erst mal zum Abendbrot.
Schönen Abend
Bugcatcher -
bugcatcher schrieb:
Okay, vielen Dank nochmal an Euch Beide. Werde mich morgen mal um das Ticket kümmern. Jetzt geht es erst mal zum Abendbrot.
Schönen Abend
Bugcatcher
Dir auch, bis dann. -
Hallo,
habe ein Ticket hier eingestellt und der Fehler wurde gefunden.
Die versand.php habe ich im Format UTF-8 mit BOM auf dem Server gespeichert.
Dieses Datei muss allerdings UFT-8 ohne BOM kodiert sein. Und schon funktioniert es.
Vielen Dank noch mal an das Team für die schnelle Antwort.
Bugcatcher -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage