Formular funzt nicht wirklich

Hallo an alle

Ich bin dabei ein Kontakt-Formular einzubauen und test selbiges auf meinem lokalen apache mit php 5 (?!).
Das Script selbst ist von www.gajin.de und ist für die versionen 4.x getestet.

Bei meiner Suche bin in nicht wirklich auf ein Kontakt-Formular für php 5 gestossen. Und wie man lesen kann --> php 3Wochen --> grundkenntnisse - und die Hälfte schon wieder vergessen.

Könnte sich jemand folgendes Formular angucken und mir event. mögliche Fehler sagen?

Kontaktformular -- www.gaijin.at Kontakt 
<?php // ***Deine Mailadresse (Empfänger)***<br />$mail\_to="[email protected]";
// \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

$from\_name=$\_POST['fromname'];
$from\_mail=strtolower($\_POST['frommail']);
$mail\_subject=$\_POST['mailsubject'];
$mail\_text=$\_POST['mailtext'];
$send=$\_POST['s'];

if(trim($from\_name)=="") $err\_text.="Bitte gib Deinen Namen an.
";
if(trim($from\_mail)=="")
 $err\_text.="Bitte gib Deine E-Mail-Adresse an.
";
else
 if(!ereg("^[\_a-z0-9-]+(\.[\_a-z0-9-]+)\*@[a-z0-9-]+(\.[a-z0-9-]+)\*(\.[a-z]{2,6})$",$from\_mail))
 $err\_text.="Bitte gib eine gültige E-Mail-Adresse an.
";
if(trim($mail\_subject)=="") $err\_text.="Bitte gib einen Betreff ein.
";
if(trim($mail\_text)=="") $err\_text.="Bitte gib einen Nachrichtentext ein.
";

// \*\*\* Zu langen Text abschneiden \*\*\*
if(strlen($mail\_text)\>1000) {
 $mail\_text=substr($mail\_text,0,1000)."... (Text wurde gekürzt!)";
}
$from\_name=str\_replace(chr(34),"''",$from\_name);
$mail\_subject=str\_replace(chr(34),"''",$mail\_subject);
$from\_name=stripslashes($from\_name);
$from\_mail=stripslashes($from\_mail);
$mail\_subject=stripslashes($mail\_subject);
$mail\_text=stripslashes($mail\_text);

if(($send=="1") && (isset($err\_text))) {
 echo " **Fehler:**
";
 echo "$err\_text ";
}

if(($send!="1") || (isset($err\_text)))
{
?\>

Dein Name: 
Deine E-Mail Adresse:
Betreff:
Text:
(max. 1.000 Zeichen)

<?php echo $mail_text; ?> <?php } else {
$header="From: $from\_name \n"; $header.="Reply-To: $from\_mail\n"; $header.="X-Mailer: PHP-FormMailer ([www.gaijin.at)\n](http://www.gaijin.at)%5Cn)"; $header.="Content-Type: text/plain"; $mail\_date=gmdate("D, d M Y H:i:s")." +0000"; $send=0; if(@mail($mail\_to,$mail\_subject,$mail\_text,$header)) { echo " **Deine E-Mail wurde abgesendet.**"; echo " [Zurück zum Formular](%255C%2522%2522.%2524_SERVER%255B'PHP_SELF'%255D.%2522?from_name=%2524from_name&from_mail=%2524from_mail%255C%2522) "; }else{ echo " **Beim Versenden der E-Mail ist ein Fehler aufgetreten!**"; echo " [Zurück zum Formular](%255C%2522%2522.%2524_SERVER%255B'PHP_SELF'%255D.%2522?from_name=%2524from_name&from_mail=%2524from_mail&mail_subject=%2524mail_subject&mail_text=%2522;) "; } } ?\> [Copyright © 2003-2007 www.gaijin.at](http://www.gaijin.at/) Fehlermeldungen sind folgende: Notice: Undefined index: fromname in D:\Webserver\phproot\white\allgemein\kontakt1.php on line 24 Notice: Undefined index: frommail in D:\Webserver\phproot\white\allgemein\kontakt1.php on line 25 Notice: Undefined index: mailsubject in D:\Webserver\phproot\white\allgemein\kontakt1.php on line 26 Notice: Undefined index: mailtext in D:\Webserver\phproot\white\allgemein\kontakt1.php on line 27 Notice: Undefined index: s in D:\Webserver\phproot\white\allgemein\kontakt1.php on line 28 Notice: Undefined variable: err\_text in D:\Webserver\phproot\white\allgemein\kontakt1.php on line 30 Ich gehe davon aus, daß es nicht an der php version liegt sondern vielmehr ein kleiner fehler ist, aber wissen tu ich es nicht :wink: vielen Dank im Voraus lg aya

Hallo!

Zwar kann ich den Fehler bei mir nicht nachvollziehen (es funktioniert wunderbar), aber es sieht so aus, als käme Deine PHP Installation nicht mit dem Zugriff auf nicht existierende Arrayfelder zurecht.
D.h. Du solltest die POST-Variablen zuerst auf Existenz überprüfen, bevor Du sie Deinen PHP Variablen zuweist.

Probier mal Folgendes:

if ($_POST[‚fromname‘]) {
$from_name=$_POST[‚fromname‘];
} else {
$from_name="";
}
if ($_POST[‚frommail‘]) {
$from_mail=strtolower($_POST[‚frommail‘]);
} else {
$from_mail="";
}
if ($_POST[‚mailsubject‘]) {
$mail_subject=$_POST[‚mailsubject‘];
} else {
$mail_subject="";
}
if ($_POST[‚mailtext‘]) {
$mail_text=$_POST[‚mailtext‘];
} else {
$mail_text="";
}
if ($_POST[‚s‘]) {
$send=$_POST[‚s‘];
} else {
$send="";
}

$err_text;

Vielen lieben Dank!!

Ich hab das mal so eingebaut und damit bekomme ich die lästigen Meldungen weg.

Zusätzlich hab ich auch festgestellt daß mein error_reporting in der php.ini nicht korrekt eingestellt war.

Dank dir recht herzlich und lg
aya

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Vielen lieben Dank!!

Ich hab das mal so eingebaut und damit bekomme ich die
lästigen Meldungen weg.

Zusätzlich hab ich auch festgestellt daß mein error_reporting
in der php.ini nicht korrekt eingestellt war.

Dank dir recht herzlich und lg
aya

is schon richtig eingestellt.
ist halt nicht sauber programmiert wenn du notices produzierst.

Gruß

Hallo,

Fehlermeldungen sind folgende:
Notice: Undefined index: fromname in
D:\Webserver\phproot\white\allgemein\kontakt1.php on line 24

error_reporting(E_ALL ^ E_NOTICE); an den Anfang des Scriptes, und PHP verschweigt diese Fehler.

Wenn das dein lokaler Server ist, kannst du auch in der php.ini nach error_reporting suchen und das dort für alle Scripte eintragen.

„Saubere“ Programmierung ist aber wie in der Antwort vor meiner, die Existenz der Variablen jeweils mit isset zu prüfen.

Alex

Wenn das dein lokaler Server ist, kannst du auch in der
php.ini nach error_reporting suchen und das dort für alle
Scripte eintragen.

Interessanterweise habe ich den Apache meines xampp nicht dazu bringen können, mir diese Fehler auch auszugeben. Vielleicht habe ich das error reporting auch nur falsch eingestellt, wie müßte es denn korrekt lauten in der php.ini?

nur zur Info ich verwende keinen xampp, und die Einstellung bei mir mit den Notices war:
error_reporting = E_ALL; display all errors, warnings and notices

lg

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]