• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] PHP input Felder = Pflichtfelder

hi,

hoffe bin hier richtig mit meinem problem... ich habe ein kleines formail skript mit php erstellt. funktioniert soweit auch. das problem ist das es öfter auch mal leer abgesendet wird.
kann man aus den feldern pflichtfelder machen? das heißt es würde im idealfall eine meldung ausgegeben dass das feld auszufüllen ist.

so sieht das bisher aus

Code:
        <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">

            <dl>
                <dt><strong><font size="4">formular</font></strong></dt>
                <dd> </dd>
                <dt>Ihr Name:</dt>
                <dd><input type="text" name="Versender" /></dd>
                <dt> </dt>
 
Hi,
du musst dir übergebenen Daten in deinem PHP-Script checken:
Code:
if( $formularfeld == "" ) echo "Fehler - alles ausfüllen!";
else eintragen( $formularfeld );

Die Variable $foumlarfeld musst du dir natürlich vorher mit $formularfeld = $_POST['Versender']; holen. Dann kannste damit arbeiten ;)
 
bin nicht so der php kenner, deshalb muss ich nochmal fragen


ich hab ja mehrere formularfelder, wenn ich der variable ein formularfeld zuordne wird immer der gleiche wert genommen, oder nicht?

$formularfeld = $_POST['Versender'];

'Versender' wäre der absenden button, oder?
 
Ja, name= ist der Varaiblenname




Du kannst aber auch direkt abfragen und auch prüfen ob die Variable überhaupt vorhanden ist.
if (isset($_POST['versender']) and STRLEN($_POST['versender']) < 3) {
print "<br>Alles ausfüllen, sonst geht es nicht weiter";

}
 
hier mal das ganze skrip. wenn ich jetzt die site aufrufe werde ich direkt
auf die "antwort seite" weitergeleitet...

Code:
<?php
ob_start();
 echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">"; ?><?php

$strEmpfaenger = 'xxxxxxxxxxxxxx';

$strFrom       = '"xxxxxxxxxxxxxxxx" <xxxxxxxxxxxxxx>';

$strSubject    = 'Anfrage Kontakt';

$strReturnhtml = 'http://www.xxxxxxxxxxxxxxx';

$strDelimiter  = ":\t";

$formularfeld = 'Versender';

 
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);
 }
if( $formularfeld == "" ) echo "Fehler - alles ausfüllen!";
else eintragen( $formularfeld );
}
{
 mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
 header("Location: $strReturnhtml");
 exit;
}
?>

    <head>
        <title>xxxxxxxxxxxx kontakt********************************</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
        <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">

            <dl>
                <dt><strong><font size="4">Anmeldung </font></strong></dt>
                <dd> </dd>
                <dt>Ihr Name:</dt>
                <dd><input type="text" name="Versender" /></dd>
                <dt> </dt>
                <dt>Ihr Geburtsdatum</dt>
                <dd><input type="text" name="Geburtsdatum" /></dd>
                <dt> </dt>
                <dt>Ihre E-Mail Adresse</dt>
                <dd><input type="text" name="E-Mail" /></dd>
                <dt> </dt>
                <dt>Strasse:</dt>
                <dd><input type="text" name="Strasse" /></dd>
                <dt> </dt>
                <dt>Land:</dt>
                <dd><input type="text" name="Land" /></dd>
                <dt> </dt>
                <dt>PLZ:</dt>
                <dd><input type="text" name="PLZ" /></dd>
                <dt> </dt>
                <dt>Ort:</dt>
                <dd><input type="text" name="Ort" /></dd>
            </dl>
            <dl>
              <dt>Telefonnummer:</dt>
              <dd>
                <input type="text" name="Telefonnummer" />
              </dd>
            </dl>
            <dl>
              <dt>Wieviele Personen bringen Sie mit:</dt>
              <dd>
                <input type="text" name="Personen" />
</dd>
            </dl>
            <dl>
              <dt>Name und Funktion der BegleiterInnen:</dt>
              <dd>(Beispiel: Marion Mustermann; Mutter)</dd>
              <dd>
                <input type="text" name="Name und Funktion" />
</dd>
              <dt> </dt>
              <dd>
                <input type="text" name="Name und Funktion2" />
</dd>
              <dt>  </dt>
              <dd>
                <input type="text" name="Name und Funktion3" />
</dd>
            </dl>
          <dl><dt>Sonstige Wünsche und Anregungen:</dt>
              <dd><textarea name="Bemerkungen" rows="5" cols="40"></textarea>
              </dd>
            </dl>
            <p>
            <input type="submit" value="Senden" />
            <input type="reset" value="Zurücksetzen" />
            </p>
        </form>
    </body>
</html>
 
wenn ich jetzt die site aufrufe werde ich direkt
auf die "antwort seite" weitergeleitet...
Du meinst, dass dann die Mail verschickt wird, obwohlnoch nichts eingetragen wurde?

Dann checke doch anstelle von $POST einfach einen expliziten Wert z.B. $POST['Name']. Dann sollte es gehen.
 
wenn ich die site so aufrufe wie sie oben aufgeführt ist, komme ich nicht zu der eigentlichen site, sondern zu der site die angezeigt wird wenn man das formular abgeschickt hat...

wenn ich

Code:
$formularfeld = 'Versender';

und

Code:
if( $formularfeld == "" ) echo "Fehler - alles ausfüllen!";
else eintragen( $formularfeld );


wieder rausnehme komme ich auch wieder auf das eigentliche formular, allerdings kann ich es dann auch wieder leer abschicken. ich hab nicht wirklich den "php plan" ich hab mir das skript nach einer anleitung auf selfphp zusammengebastelt, uns somit weiss ich leider nicht genau wo ich was reinschreiben muss damits funktioniert...
 
Auf die Gefahr hin, dass einer Mault, von wegen Komplettlösung - blah blah - hier der Code, wie er funktionieren sollte:
Code:
<html>
<?php
ob_start();
 echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">"; ?>
    <head>
        <title>xxxxxxxxxxxx kontakt********************************</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
<?php

$strEmpfaenger = 'xxxxxxxxxxxxxx';

$strFrom       = '"xxxxxxxxxxxxxxxx" <xxxxxxxxxxxxxx>';

$strSubject    = 'Anfrage Kontakt';

$strReturnhtml = 'http://www.xxxxxxxxxxxxxxx';

$strDelimiter  = ":\t";

$formularfeld = $_POST['Versender'];


if(strlen($formularfeld) > 3)
{
   $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);
   }
   else
   {
      mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
      or die("Die Mail konnte nicht versendet werden.");
      header("Location: $strReturnhtml");
      exit;
   }
}
else
{
   echo '<b>Bitte das Feld "Versender" ordnungsgemäß ausfüllen!</b>'
}
?>
        <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">

            <dl>
                <dt><strong><font size="4">Anmeldung </font></strong></dt>
                <dd> </dd>
                <dt>Ihr Name:</dt>
                <dd><input type="text" name="Versender" /></dd>
                <dt> </dt>
                <dt>Ihr Geburtsdatum</dt>
                <dd><input type="text" name="Geburtsdatum" /></dd>
                <dt> </dt>
                <dt>Ihre E-Mail Adresse</dt>
                <dd><input type="text" name="E-Mail" /></dd>
                <dt> </dt>
                <dt>Strasse:</dt>
                <dd><input type="text" name="Strasse" /></dd>
                <dt> </dt>
                <dt>Land:</dt>
                <dd><input type="text" name="Land" /></dd>
                <dt> </dt>
                <dt>PLZ:</dt>
                <dd><input type="text" name="PLZ" /></dd>
                <dt> </dt>
                <dt>Ort:</dt>
                <dd><input type="text" name="Ort" /></dd>
            </dl>
            <dl>
              <dt>Telefonnummer:</dt>
              <dd>
                <input type="text" name="Telefonnummer" />
              </dd>
            </dl>
            <dl>
              <dt>Wieviele Personen bringen Sie mit:</dt>
              <dd>
                <input type="text" name="Personen" />
	      </dd>
            </dl>
            <dl>
              <dt>Name und Funktion der BegleiterInnen:</dt>
              <dd>(Beispiel: Marion Mustermann; Mutter)</dd>
              <dd>
                <input type="text" name="Name und Funktion" />
	      </dd>
              <dt> </dt>
              <dd>
                <input type="text" name="Name und Funktion2" />
	      </dd>
              <dt>  </dt>
              <dd>
                <input type="text" name="Name und Funktion3" />
	      </dd>
            </dl>
          <dl><dt>Sonstige Wünsche und Anregungen:</dt>
              <dd><textarea name="Bemerkungen" rows="5" cols="40"></textarea>
              </dd>
            </dl>
            <p>
            <input type="submit" value="Senden" />
            <input type="reset" value="Zurücksetzen" />
            </p>
        </form>
    </body>
</html>
 
so sollte es gehen. Jedoch würde ich empfehlen einen Tag durchgehend für fette Schrift zu nehmen, und zwar <strong> und nicht <b>
Im Prinzip meine Empfehlung umgestzt :D
 
danke für die schnelle hilfe!

bekomme aber einen fehler

Parse error: parse error, unexpected '}', expecting ',' or ';' in

line 57

in dieser zeile ist nur die }

wenn ich die klammer rausneheme bekomme ich einen parse error in line 122 (letzte zeile)... </html>
 
Code:
echo '<b>Bitte das Feld "Versender" ordnungsgemäß ausfüllen!</b>' ;
Da fehlt ein Semikolon am Ende.
 
Oben