echo $begrüßung;
ich hab jetzt versucht, die änderungsvorschläge so gut es geht umzusetzen, allerdings bekomme ich jetzt ganz andere Probleme, wie z.B. dass mir gesagt wird das ich einen namen und email-adresse eingeben sollen, dabei habe ich die seite gerade erst aufgerufen!
if (strlen($err_text)) {
echo "<p><big><b>Fehler:</b></big><br>";
echo "$err_text</p>";
}
Du hast hier beim Ändern zu viel entfernt bzw. ersetzt. Der Test auf $send ist die Entscheidung, ob das Formuler neu ist oder zur Korrektur vorgelegt wird, wobei dann Fehler angezeigt werden sollen.
if (($send=="1") && (strlen($err_text))) {
müsste die erste Zeile lauten.
das zweite Problem ist, dass wenn ich was abschicken will, die seite scheinbar nur "reloaded" wird. eine mail wird dabei auch nicht abgeschickt, fehler kommen auch keine.. :(
if(($send!="1") || (isset($err_text)))
Hier musst du auch statt isset() strlen() verwenden. (Und den Teil mit dem $send so lassen.)
<td width=100%><input type="text" name="fromname" size=25 maxlength=120 value="<?php echo $from_name; ?>"></td>
Wichtig ist, dass du in diesen Zeilen aus dem <?php echo $variable; ?> ein
<?php echo htmlspecialchars($variable); ?>
machst, damit darin enthaltene <, >, & und " HTML-gerecht kodiert werden.
if(@mail($header,$mail_to,$tickets,$datum,$tele))
So geht das mit der mail()-Funktion nicht. Der erste Parameter muss der Empfänger sein. Dann kommt das Subjekt. Der dritte Parameter ist der Text der Mail. Wenn du da noch den Inhalt von Eingabefeldern drin haben möchtest, musst du den Text damit ergänzen bevor du ihn der Funktion übergibst. Dann hast du auch noch zusätzliche Header (From, Reply-To, Content-Type) in der Variable $header stehen, die du als vierten Parameter übergeben musst. Außerdem müssten die Header-Zeilen jeweils mit \r\n und nicht nur mit \n abgeschlossen werden.
echo "<p><a href="__FILE__?from_name=$from_name&from_mail=$from_mail">Zurück zum Formular</a></p>";
Das __FILE__ ist ganz sicher keine gute Idee. Abgesehen davon, dass das eine Konstante ist, die in einem ""-String im Gegensatz zu Variablen nicht berücksichtigt wird, ist das der Name der Datei mit vollständigem Pfad im Dateisystem, der ein anderer sein wird, als der den der Apache erwartet. PHP_SELF war schon nicht verkehrt, nur muss es $_SERVER['PHP_SELF'] geschrieben werden. Außerdem müssen geschweifte Klammern drum, weil sonst dieser komplexe Ausdruck innerhalb eines ""-Strings nicht richtig als Variable erkannt wird.
echo "<p><a href="__FILE__?from_name=$from_name&from_mail=$from_mail&mail_text=";
echo urlencode($mail_text)."">Zurück zum Formular</a></p>";
Weiterhin müssen, so wie es hier mit dem mail_text gemacht wurde, alle Werte, die in einer URL übertragen werden sollen URL-gerecht kodiert werden. Ferner ist das & in HTML als & zu notieren, auch wenn es wie hier als Trenner zwischen den Parametern verwendet wird.
Und noch etwas: Du hast das Original-Script um eigene Felder ergänzt und eins mit dem Namen mailsubject entfernt. Du solltest dann auch alle Verweise im Quelltext darauf entfernen, z.B. den da:
$mail_subject=$_POST['mailsubject'];
echo "$verabschiedung $name";