Seite 1 von 1

Formularvariable wird durch "isset()" ignoriert

Verfasst: Mo Jun 16, 2014 10:10 am
von FritziFoppel
Tach,
ich hab ein Problem mit folgendem Code:

Code: Alles auswählen

//Dateiname anm.php
<?php
if(isset($_POST["send"]))
{
  if(isset($_POST["nn"]) && isset($_POST["vn"]))
  {
    if(isset($_POST["em"])
    {
      //irgendwas passiert
    }
    else
    {
      echo "<p>Es wurde keine E-Mail eingegeben!</p>
    }
  }
  else
  {
    <p>Es m&uuml;ssen Vor- und Nachname vorhanden sein!</p>
  }
}?>
//hier beginnt der html Teil
<form action="anm.php" method="post">
  <p><input name="nn"/> Nachname</p>
  <p><input name="vn"/> Vorname</p>
  <p><input name="em" value="user@example.de"/> E-Mail</p>
  <p><input type="submit" name="send"/></p>
</form>
Nun zu meinem Problem:
Wenn ich in das Formular nur den Nachnamen eintrage wird scheinbar auf die If-Abfragen verzichtet und die Aktion unter if(isset($_POST["em"]) wird ausgeführt. Es macht auch keinen Unterschied, ob ich nur den Vornamen, oder nur die E-Mail, oder alles eintrage. Ich hab leider keinen blassen Schimmer was ich hier vergeigt habe.

Re: Formularvariable wird durch "isset()" ignoriert

Verfasst: Mo Jun 16, 2014 10:28 am
von oenone
Wenn das Formular alle Felder enthält, werden auch alle via POST übergeben. Selbst wenn es leere Strings sind. Das bedeutet, isset wird für alle Parameter true zurückliefern. Du solltest lieber Stringvergleiche mit "" machen.

Re: Formularvariable wird durch "isset()" ignoriert

Verfasst: Mo Jun 16, 2014 10:41 am
von FritziFoppel
Okay danke!

Re: Formularvariable wird durch "isset()" ignoriert

Verfasst: Di Jun 17, 2014 6:39 am
von xerion21
du kannst auch prüfen lassne, ob der String leer ist. dies kann man mit

Code: Alles auswählen

if (!empty($_POST["send"]))
und dann kannst du es natürlich noch mit deiner Abfrage verketten und überprüfen, ob die Variable gesetzt ist:

Code: Alles auswählen

if(isset($_POST["send"]) && !empty($_POST["send"]))

Re: Formularvariable wird durch "isset()" ignoriert

Verfasst: Di Jun 17, 2014 2:15 pm
von FritziFoppel
Hatte ich schon so gelöst ;), trotzdem Danke.

Re: Formularvariable wird durch "isset()" ignoriert

Verfasst: Mi Jun 18, 2014 8:23 am
von Dominik
xerion21 hat geschrieben:du kannst auch prüfen lassne, ob der String leer ist. dies kann man mit

Code: Alles auswählen

if (!empty($_POST["send"]))
und dann kannst du es natürlich noch mit deiner Abfrage verketten und überprüfen, ob die Variable gesetzt ist:

Code: Alles auswählen

if(isset($_POST["send"]) && !empty($_POST["send"]))
empty würde als Prüfung allein vollkommen reichen.

Re: Formularvariable wird durch "isset()" ignoriert

Verfasst: Di Jun 24, 2014 2:00 pm
von darksider3
Intelligenter wäre es wohl zu beginn zu prüfen, ob die Variable überhaupt existiert:

Code: Alles auswählen

if($_PST["varName"])
:-)

Re: Formularvariable wird durch "isset()" ignoriert

Verfasst: Di Jun 24, 2014 2:21 pm
von oenone
Naja, $_POST dürfte immer existieren. Der Rest ist ja nur Zugriff auf ein Dictionary. Da gibt es auch Funktionen, um herauszufinden ob ein Schlüssel existiert.