Wenn Checkbox an, Kopie an Absender. Funktioniert aber nicht!
Bernhard unreg
- php
Hi Leute,
Nachdem ich nun auf ein anderes Script für mein Kontaktformular "umgestiegen" bin, versuche ich schon die ganze Zeit die Checkbox-Funktion zum laufen zu bringen (siehe Titel dieses Postes). Bei dem was ich bisher gelernt habe, ist nun folgendes Ergebnis rausgekommen:
<?php
[...]
//Mail komponieren
$mailheader="From: formular@jesus-christus-zentrum.de\r\n";
$mailheader.="CX-Sender-IP: ".$_SERVER['REMOTE_ADDR']."\r\n";
$mailheader.="Content-Type: text/html; charset=ISO-8859-1\r\n";
$message=nl2br("Name: $name\nEmail: $email\n\n$message");
$subject="$betreff ";
if (@mail($empfaenger, $subject, $message, $mailheader));
if(isset($_POST['kopie'])) { //Name der Checkbox ist "kopie", value="ja"
$kopieheader="From: $empfaenger\r\n";
$kopieheader.="Reply-To: $empfaenger\r\n";
$kopieheader.="X-Mailer: PHP/" . phpversion(). "\r\n";
$kopieheader.="X-Sender-IP: ".$_SERVER['REMOTE_ADDR']."\r\n";
$kopieheader.="Content-Type: text/html; charset=ISO-8859-1\r\n";
$text="Hallo $name!\n";
$text.="Mit dieser Email erhältst Du eine Kopie der Nachricht, die Du mir über das Kontaktformular auf $pagename gesendest hast.\n";
$text.="Und dies ist ihr Inhalt:\n------------\nName: $name\nEmail: $email\n\n";
$text.="$message\n-----------\nLieben Gruß, Bernhard";
mail($email, $subject, $text, $kopieheader)
{ //<-------------Das ist Zeile 95---------------->
//Alles ok, Seite neuladen (Reloadsperre)
header("Location:$pagename?success"); //$pagename ist eine absolute URL
[...]
?>
Aber trotzdem bekomme ich immer wieder diese Fehlermeldung vom Sever:
Parse error: parse error, unexpected '{' in /homepages/36/d190080444/htdocs/Kontakt3.php on line 95
Zeile 95 ist oben angezeigt.
Ich weiß wirklich nicht wo das Problem ist. Kann mir da bitte jemand helfen?
Gruß, Bernhard
Hi Leute,
Nachdem ich nun auf ein anderes Script für mein Kontaktformular "umgestiegen" bin, versuche ich schon die ganze Zeit die Checkbox-Funktion zum laufen zu bringen (siehe Titel dieses Postes). Bei dem was ich bisher gelernt habe, ist nun folgendes Ergebnis rausgekommen:
<?php
[...]
//Mail komponieren
$mailheader="From: formular@jesus-christus-zentrum.de\r\n";
$mailheader.="CX-Sender-IP: ".$_SERVER['REMOTE_ADDR']."\r\n";
$mailheader.="Content-Type: text/html; charset=ISO-8859-1\r\n";
$message=nl2br("Name: $name\nEmail: $email\n\n$message");
Das ergibt, wenn ich das richtig sehe, eine laaaaaaaaaaange Zeile in der Mail. Unschön. Vergleiche das RFC bzgl. Zeilenlängen in E-Mails.
$subject="$betreff ";
if (@mail($empfaenger, $subject, $message, $mailheader));if(isset($_POST['kopie'])) { //Name der Checkbox ist "kopie", value="ja"
Einrücken würde der Übersichtlichkeit des Codes gut tun... :-)
$kopieheader="From: $empfaenger\r\n";
$kopieheader.="Reply-To: $empfaenger\r\n";
$kopieheader.="X-Mailer: PHP/" . phpversion(). "\r\n";
$kopieheader.="X-Sender-IP: ".$_SERVER['REMOTE_ADDR']."\r\n";
$kopieheader.="Content-Type: text/html; charset=ISO-8859-1\r\n";$text="Hallo $name!\n";
$text.="Mit dieser Email erhältst Du eine Kopie der Nachricht, die Du mir über das Kontaktformular auf $pagename gesendest hast.\n";
$text.="Und dies ist ihr Inhalt:\n------------\nName: $name\nEmail: $email\n\n";
$text.="$message\n-----------\nLieben Gruß, Bernhard";
mail($email, $subject, $text, $kopieheader)
{ //<-------------Das ist Zeile 95---------------->
//Alles ok, Seite neuladen (Reloadsperre)
header("Location:$pagename?success"); //$pagename ist eine absolute URL
[...]
?>Aber trotzdem bekomme ich immer wieder diese Fehlermeldung vom Sever:
Parse error: parse error, unexpected '{' in /homepages/36/d190080444/htdocs/Kontakt3.php on line 95
Zeile 95 ist oben angezeigt.
Ich weiß wirklich nicht wo das Problem ist. Kann mir da bitte jemand helfen?
Welche Zeile genau ist Zeile 95? Ah, da...
Der Parser sagt Dir, daß er da eine Klammer findet, die er nicht erwartet. Was macht die da, einsam und allein in Zeile 95?
Und dem mail-Kommando vorher fehlt wohl ein Semikolon.
Nick
Hallo,
$message=nl2br("Name: $name\nEmail: $email\n\n$message");
Das ergibt, wenn ich das richtig sehe, eine laaaaaaaaaaange Zeile in der Mail.
nein, nur wenn $message schon vorher ein langer String ohne Zeilenumbrüche war. Denn auch wenn der Name das unterstellt, _ersetzt_ nl2br() ja nicht die Zeilenumbrüche durch "<br />", sondern _ergänzt_ sie. Die \n oder \r\n im String bleiben bestehen.
So long,
Martin
Hallo,
mail($email, $subject, $text, $kopieheader)
{ //<-------------Das ist Zeile 95---------------->
//Alles ok, Seite neuladen (Reloadsperre)
Aber trotzdem bekomme ich immer wieder diese Fehlermeldung vom Sever:
Parse error: parse error, unexpected '{' in /homepages/36/d190080444/htdocs/Kontakt3.php on line 95
Ich weiß wirklich nicht wo das Problem ist.
wieso nicht? Steht doch im Klartext da: In Zeile 95 taucht plötzlich ein '{' (öffnende geschweifte Klammer) auf, das der Parser dort nicht erwartet.
Erstens fehlt das abschließende Semikolon nach dem Aufruf von mail(), so dass diese Anweisung noch nicht "beendet" ist. Also lautet deine Anweisung vereinfacht
mail(...) {
Zweitens ist mir nicht klar, welchen Sinn das haben soll. Mit '{' beginnst du einen neuen Block innerhalb des Programms, etwa nach Strukturanweisungen wie if, while, switch und ähnlichen. Was hast du vor, wenn du einfach mitten im Code ein '{' einstreust?
Have a nice day,
Martin
hi,
Nachdem ich nun auf ein anderes Script für mein Kontaktformular "umgestiegen" bin,
... hampelst du trotzdem immer noch an der gleichen Problematik rum.
gruß,
wahsaga
//Mail komponieren
Bittebitte, im Deutschen komponiert man Lieder, Opern und dergleichen, vielleicht noch ein Fünf-Gänge-Menü, aber keinen Brief. Briefe werden verfasst oder geschrieben. Ist nicht der Fehler, aber so ein Denglisch-Schwachsinn muss trotzdem nicht sein.
$mailheader="From: formular@jesus-christus-zentrum.de\r\n";
$mailheader.="CX-Sender-IP: ".$_SERVER['REMOTE_ADDR']."\r\n";
X-Sender-IP, nicht CX-Sender-IP (ist auch nicht der Fehler).
$mailheader.="Content-Type: text/html; charset=ISO-8859-1\r\n";
$message=nl2br("Name: $name\nEmail: $email\n\n$message");
$subject="$betreff ";
Sofern $betreff nicht außerhalb des zitierten Codes entschärft wird, namentlich enthaltene Zeilenumbrüche, hast du an dieser Stelle wahrscheinlich Spammern Tür und Tor geöffnet.
if (@mail($empfaenger, $subject, $message, $mailheader));
Überlege dir mal, welchen Sinn die if-Abfrage hier hat.
Mit @ Fehlermeldungen zu unterdrücken, ist davon unabhängig überaus unklug, denn Fehlermeldungen sind als Hilfe gedacht. Dass du sie nicht dem Benutzer präsentieren möchtest, ist vollkommen richtig, den gehen sie nämlich nichts an, aber dafür ist die Einstellung ini.display_errors gedacht.
mail($email, $subject, $text, $kopieheader)
{ //<-------------Das ist Zeile 95---------------->
Parse error: parse error, unexpected '{' in /homepages/36/d190080444/htdocs/Kontakt3.php on line 95
Ich weiß wirklich nicht wo das Problem ist. Kann mir da bitte jemand helfen?
Steht doch da: Die geschweifte Klammer hat an der Stelle nichts zu suchen, was auch nur verständlich ist, da geschweifte Klammern Codeblöcke im Anschluss an bedingte Verzweigungen (if & Co.) umfassen. Dieser Fehler hängt sicher mit der verwaisten if-Abfrage von oben zusammen.
Also. Kleine Fehler, große Wirkung. Die Fehler waren, daß ich hinter "exit;" vergessen hatte eine schließende geschweifte Klammer hinzusetzten. Und natürlich auch das eine Semikolon.
Aber kaum hat man ein Problem gelöst, taucht auch schon das nächste auf.
Denn wenn ich auf den submit-Button klicke, erscheint die Fehlermeldung, ich hätte ein ungültige Email-Adresse eingegeben. Ich hab aber eine gültige, nämilich meine eigene, Email-Adresse eingegeben. Und trotzdem die Fehlermeldung.
hi,
Aber kaum hat man ein Problem gelöst, taucht auch schon das nächste auf.
Erwartest du jetzt geheucheltes Erstaunen, oder ...?
Denn wenn ich auf den submit-Button klicke, erscheint die Fehlermeldung, ich hätte ein ungültige Email-Adresse eingegeben.
Das interessiert den PHP-Parser herzlich wenig - also muss es sich wohl um eine von dir im Script selber vorgenommene Prüfung handeln -
Ich hab aber eine gültige, nämilich meine eigene, Email-Adresse eingegeben. Und trotzdem die Fehlermeldung.
gruß,
wahsaga
»» Erwartest du jetzt geheucheltes Erstaunen, oder ...?
:-) Ne. Wollte einfach nur ne passende Überleitung schaffen.
»»Das interessiert den PHP-Parser herzlich wenig - also muss es sich wohl um eine »»von dir im Script selber vorgenommene Prüfung handeln -
- und diese Prüfung wird wohl fehlerhaft sein.
Ja, die Email-Adressprüfung war fehlerhaft. Das Zeichen ">" hatte bei "if...(strlen($email)<0)" nichts zu suchen.
Gruß, Bernhard