• 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

leeenux

Member
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>
 

Dr. Glastonbury

Advanced Hacker
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 ;)
 
OP
L

leeenux

Member
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?
 

Frankie777

Advanced Hacker
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";

}
 
OP
L

leeenux

Member
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>
 

Bartlin

Member
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.
 
OP
L

leeenux

Member
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...
 

Dr. Glastonbury

Advanced Hacker
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>
 

Bartlin

Member
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
 
OP
L

leeenux

Member
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>
 

cero

Guru
Code:
echo '<b>Bitte das Feld "Versender" ordnungsgemäß ausfüllen!</b>' ;
Da fehlt ein Semikolon am Ende.
 
Oben