Formular Pflichtfelder

mestro

Mitglied
Hallo Ihrs!

Habe folgendes Problem:

Ich hab ein Formular mit Hilfe von NOF 7.5 erstellt. Dort schicke ich nun die Daten per <form action="kontakt.php" method="post"> ind die Kontakt.php welche so aussieht:

PHP:
<?php
### Konfiguration ###

# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!

# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger = 'xxx@gmx.net';

# Welche Adresse soll als Absender angegeben werden?
# (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$strFrom = 'xxx@gmx.net';

# Welchen Betreff sollen die Mails erhalten?
$strSubject = 'Anfrage';

# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml = 'http://www.xxx.de/html/danke.html';

# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$strDelimiter = ":\t";

### Ende Konfiguration ###

if($_POST)
{
$strMailtext = "";

while(list($strName,$value) = each($_POST))
{
if(is_array($value))
{
foreach($value as $value_array)
{
$strMailtext .= $strName.$strDelimiter.$value_array."\n";
}
}
else
{
$strMailtext .= $strName.$strDelimiter.$value."\n";
}
}

if(get_magic_quotes_gpc())
{
$strMailtext = stripslashes($strMailtext);
}

mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
or die("Die Mail konnte nicht versendet werden.");
header("Location: $strReturnhtml");
exit;
}

?>

Wie kann ich nun Pflichtfelder einfügen? Und wie könnte ich den Betreff in den EMailbetreff einfüge, die ich zugeschickt bekomme?

Über eine Antwort würde ich mich sehr freuen.. nur bitte anfängerfreundlich sollte sie sein :-)

MIt freundlichen Grüßen

Mestro

P.S. Das Kontaktformular findet man unter http://www.glaspeters.de
 
Zuletzt bearbeitet:
Du könntest mal probieren, ob das funktioniert:
PHP:
<?php
### Konfiguration ###

# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!

# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger = 'xxx@gmx.net';

# Welche Adresse soll als Absender angegeben werden?
# (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$strFrom = 'xxx@gmx.net';

# Welchen Betreff sollen die Mails erhalten?
$strSubject = 'Anfrage';

# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml = 'http://www.xxx.de/html/danke.html';

# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$strDelimiter = ":\t";

### Ende Konfiguration ###

if($_POST)
{
  $strMailtext = "";
  
  if($_POST["Name"] == "") //Pflichtfeld "Name"
    $error[] = "Bitte geben Sie Ihren Namen ein!";
  if($_POST["Vorname"]) //Pflichtfeld "Vorname"
    $error[] = "Bitte geben Sie Ihren Vornamen ein!";

  if(!count($error))
  {
    while(list($strName, $value) = each($_POST))
    {
      if(is_array($value))
        foreach($value as $value_array)
          $strMailtext .= $strName.$strDelimiter.$value_array."\n";
      else
        $strMailtext .= $strName.$strDelimiter.$value."\n";
    }

    if(get_magic_quotes_gpc())
      $strMailtext = stripslashes($strMailtext);

    mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
    or die("Die Mail konnte nicht versendet werden.");

    header("Location: $strReturnhtml");
    exit;
  }
  else
    foreach($error as $err)
      echo "$err<br>";
}
?>
Ich habe da erstmal nur 2 Felder "Name" und "Vorname" abgefangen. Dass musst Du natürlich so anpassen, wie Du es brauchst.
Ich hoffe es funktioniert, denn ich konnte es nicht testen. Falls Fehler auftreten, dann her damit!
Und was meintest Du mit Betreff und E-Mail Betreff?
Du übergibst doch die Variable $strSubject als Betreff, was ist denn daran falsch?

redlama
 
Zuletzt bearbeitet:
Gute Morgen..

Klappt leider nicht so.. er versendet trotzdem. Und das mit dem Betreff: Der Kunde kann ja in einem Formularfeld den Betreff eingeben. Diesen würde ich gerne in der Email stehen haben als Betreff.

Mit freundlichen Grüßen

Mestro
 
Ok, was den Betreff bestrifft, da musst Du dann sozusagen nur der Variable $strSubject den richtigen wert übergeben. Nehmen wir einmal an, Dein Formularfeld für den Betreff heißt auch "Betreff", dann müsste es so lauten:
PHP:
$strSubject = $_POST["Betreff"];
Und was die Pflichfelder betrifft, wie heißen denn die Felder in Deinem Formular und welche davon sollen Pflichtfelder sein?

redlama
 
Die Felder heißen

Nachname
Straße
PLZ
Ort
Telefon

Diese sollten ausgefült sein. Das mit dem Betreff klappt so... danke.

Mit freundlichen Grüßen

Mestro
 
Einfach diese Zeilen entsprechend ergänzen:
PHP:
if($_POST["Name"] == "") //Pflichtfeld "Name"
    $error[] = "Bitte geben Sie Ihren Namen ein!";
  if($_POST["Vorname"]) //Pflichtfeld "Vorname"
    $error[] = "Bitte geben Sie Ihren Vornamen ein!";
 
Logischerweise vor die Abarbeitung der Werte. Achte darauf, dass das Script die Abarbeitung nicht vornimmt, solange keine Fehler (also alle Felder ausgefüllt sind) auftreten.
 
So habe es jetzt so eingefügt.

PHP:
<?php
### Konfiguration ###

# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!

# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger = 'xxx@gmx.net';

# Welche Adresse soll als Absender angegeben werden?
# (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$strFrom = 'xxx@.de';

# Welchen Betreff sollen die Mails erhalten?
$strSubject = $_POST["Betreff"];

# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml = 'http://www.xxx.de/html/danke.html';

# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$strDelimiter = ":\t";

### Ende Konfiguration ###

if($_POST)
{
$strMailtext = "";

if($_POST["Nachname"] == "") //Pflichtfeld "Nachname" 
$error[] = "Bitte geben Sie Ihren Nachnamen ein!"; 
if($_POST["PLZ"]) //Pflichtfeld "PLZ" 
$error[] = "Bitte geben Sie Ihren PLZ ein!"; 
if($_POST["Ort"] == "") //Pflichtfeld "Ort" 
$error[] = "Bitte geben Sie Ihren Nachnamen ein!"; 
if($_POST["Telefon"]) //Pflichtfeld "Telefon" 
$error[] = "Bitte geben Sie Ihren PLZ ein!";
while(list($strName,$value) = each($_POST))
{
if(is_array($value))
{
foreach($value as $value_array)
{
$strMailtext .= $strName.$strDelimiter.$value_array."\n";
}
}
else
{
$strMailtext .= $strName.$strDelimiter.$value."\n";
}
}
if(get_magic_quotes_gpc())
{
$strMailtext = stripslashes($strMailtext);
}
mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
or die("Die Mail konnte nicht versendet werden.");
header("Location: $strReturnhtml");
exit;
}
?>

Jedoch kommt keine Fehlermeldung wenn nix ausgefüllt ist. Was ist noch falsch daran?

Mit freundlichen Grüßen

Mestro
 
Zuletzt bearbeitet:
Ich weiss nicht ob dir das was bringt aber ich mache die abfragen ob alles ausgefüllt wurde immer so:

PHP:
if(!(empty($nachname)||empty($plz)||empty($ort)||empty($telefon)))
{
echo "Mail erfolgreich gesendet";
}
else
{
echo "Sie müssen alle Fleder mit einem * ausfüllen.";
}

Vieleicht bringt dir das ja was.

Gruß
 
Zurück