formular funzt nicht wirklich

Von: , Frage gestellt am Mi, 19. Mär 2008

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?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Kontaktformular -- www.gaijin.at</title>

<meta name="title" content="Kontaktformular -- www.gaijin.at">
<meta name="description" content="Kontaktformular von www.gaijin.at">
<meta name="keywords" content="Kontakt, Kontaktformular">
<meta name="author" content="Gaijin">
<meta http-equiv="content-language" content="de-at">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>
<body>

<h1>Kontakt</h1><br>

<?php

// *** Deine Mailadresse (Empfänger) ***
$mail_to="deine@mailadresse.com";
// *************************************

$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.<br>";
if(trim($from_mail)=="")
  $err_text.="Bitte gib Deine E-Mail-Adresse an.<br>";
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.<br>";
if(trim($mail_subject)=="") $err_text.="Bitte gib einen Betreff ein.<br>";
if(trim($mail_text)=="") $err_text.="Bitte gib einen Nachrichtentext ein.<br>";

// *** 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 "<p><big>Fehler:</big><br>";
  echo "$err_text</p>";
}

if(($send!="1") || (isset($err_text)))
{
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table border=0 cellspacing=2 cellpadding=0 width=100%>
<tr><td nowrap align=right>Dein Name:</td><td> </td>
<td width=100%><input type="text" name="fromname" size=50 maxlength=120 value="<?php echo $from_name; ?>"></td></tr>
<tr><td nowrap align=right>Deine E-Mail Adresse:</td><td></td>
<td width=100%><input type="text" name="frommail" size=50 maxlength=120 value="<?php echo $from_mail; ?>"></td></tr>
<tr><td nowrap align=right>Betreff:</td><td></td>
<td width=100%><input type="text" name="mailsubject" size=50 maxlength=120 value="<?php echo $mail_subject; ?>"></td></tr>
<tr><td nowrap align=right valign=top>Text:<br>(max. 1.000 Zeichen)</td><td></td>
<td width=100%><textarea cols="40" rows="10" name="mailtext"><?php echo $mail_text; ?></textarea></td></tr>
<tr><td></td><td></td><td>
<input type="hidden" value="1" name="s">
<input type="submit" value="Nachricht versenden" name="submit">
</td></tr>
</table>
</form>

<?php
} else {
  $header="From: $from_name <$from_mail>\n";
  $header.="Reply-To: $from_mail\n";
  $header.="X-Mailer: PHP-FormMailer (www.gaijin.at)\n";
  $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 "<p>Deine E-Mail wurde abgesendet.</p>";
    echo "<p><a href=\"".$_SERVER['PHP_SELF']."?from_name=$from_name&from_mail=$from_mail\">Zurück zum Formular</a></p>";
  }else{
    echo "<p>Beim Versenden der E-Mail ist ein Fehler aufgetreten!</p>";
    echo "<p><a href=\"".$_SERVER['PHP_SELF']."?from_name=$from_name&from_mail=$from_mail&mail_subject=$mail_subject&mail_text=";
    echo urlencode($mail_text)."\">Zurück zum Formular</a></p>";
  }
}
?>

<p>Copyright © 2003-2007 www.gaijin.at</p>

</body>
</html> 


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 ;)


vielen Dank im Voraus
lg
aya

6 Antworten zu dieser Frage

  1. Antwort von nach einer Stunde 0 hilfreich
    Re: formular funzt nicht wirklich

    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;

    • Antwort von nach 17 Stunden 0 hilfreich
      Re^2: formular funzt nicht wirklich

      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]

      • Antwort von nach 20 Stunden 0 hilfreich
        Re^3: formular funzt nicht wirklich

        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ß

  2. Antwort von nach 3 Tagen 0 hilfreich
    Re: formular funzt nicht wirklich

    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

    • Antwort von nach 4 Tagen 0 hilfreich
      Re^2: formular funzt nicht wirklich

      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?

      • Antwort von nach 4 Tagen 0 hilfreich
        Re^3: formular funzt nicht wirklich

        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]

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!