Formularvariable wird durch "isset()" ignoriert

Fragen zum Thema HTML, JavaScript, PHP
Antworten
FritziFoppel
Beiträge: 101
Registriert: Sa Mär 02, 2013 6:53 pm
Wohnort: Göppingen

Formularvariable wird durch "isset()" ignoriert

Beitrag von FritziFoppel » Mo Jun 16, 2014 10:10 am

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.

Benutzeravatar
oenone
Beiträge: 223
Registriert: Do Sep 01, 2011 2:42 pm
Wohnort: Bremen
Kontaktdaten:

Re: Formularvariable wird durch "isset()" ignoriert

Beitrag von oenone » Mo Jun 16, 2014 10:28 am

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.

FritziFoppel
Beiträge: 101
Registriert: Sa Mär 02, 2013 6:53 pm
Wohnort: Göppingen

Re: Formularvariable wird durch "isset()" ignoriert

Beitrag von FritziFoppel » Mo Jun 16, 2014 10:41 am

Okay danke!

xerion21
Beiträge: 162
Registriert: Mo Jul 08, 2013 3:37 pm

Re: Formularvariable wird durch "isset()" ignoriert

Beitrag von xerion21 » Di Jun 17, 2014 6:39 am

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"]))

FritziFoppel
Beiträge: 101
Registriert: Sa Mär 02, 2013 6:53 pm
Wohnort: Göppingen

Re: Formularvariable wird durch "isset()" ignoriert

Beitrag von FritziFoppel » Di Jun 17, 2014 2:15 pm

Hatte ich schon so gelöst ;), trotzdem Danke.

Dominik
Beiträge: 381
Registriert: Mo Jul 07, 2008 9:39 pm

Re: Formularvariable wird durch "isset()" ignoriert

Beitrag von Dominik » Mi Jun 18, 2014 8:23 am

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.
Rechtschreibefehler sind gewollt und dienen der Unterhaltung

Benutzeravatar
darksider3
Beiträge: 347
Registriert: Fr Sep 14, 2012 6:26 pm
Wohnort: /dev/sda1
Kontaktdaten:

Re: Formularvariable wird durch "isset()" ignoriert

Beitrag von darksider3 » Di Jun 24, 2014 2:00 pm

Intelligenter wäre es wohl zu beginn zu prüfen, ob die Variable überhaupt existiert:

Code: Alles auswählen

if($_PST["varName"])
:-)
effizienz ist, wenn ich ein loch bohre und hinterher mein nachbar auch ein bild aufhängen kann... ^^
Meine Homepage und der Microblog von mir :)
Live Life dont let Life Live You!
Am meisten Aktiv in Webentwicklung und PHP im Wiki

Benutzeravatar
oenone
Beiträge: 223
Registriert: Do Sep 01, 2011 2:42 pm
Wohnort: Bremen
Kontaktdaten:

Re: Formularvariable wird durch "isset()" ignoriert

Beitrag von oenone » Di Jun 24, 2014 2:21 pm

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.

Antworten