isset geht nicht

Alles, was PHP betrifft, kann hier besprochen werden.

isset geht nicht

Postby Tarlar » 26. April 2005 16:01

Ich habe eine Funktion die bei mir nicht läuft:

Code: Select all
if (!isset($nickname) OR !isset($email) OR !isset($passwort))
   {
   die ("Hmm, du hast irgendwas nicht eingegeben! <a href=\"anmelden.php\">Züruck</a>");
   }


Das diese if-Schleife wird einfach irnoriert. Warum?
Tarlar
 
Posts: 9
Joined: 26. April 2005 15:14

Postby Wiedmann » 26. April 2005 16:19

Ignoriert bestimmt nicht... Es sind wohl nur alle 3 Variablen vorhanden, so das er das die() nicht ausführt.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Tarlar » 26. April 2005 16:27

Nein, ich habe die Variabeln in dem Formular nicht angegeben ;)
Tarlar
 
Posts: 9
Joined: 26. April 2005 15:14

Postby Wiedmann » 26. April 2005 16:32

Nein, ich habe die Variabeln in dem Formular nicht angegeben

Wie meinen?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Tarlar » 26. April 2005 16:55

Um dieses Script auf zurufen, muss ein Formular ausgefüllt werden. Die Daten werden dann per POST an dieses Script übergeben:

Code: Select all
$nickname = $HTTP_POST_VARS['nickname'];
$email = $HTTP_POST_VARS['email'];
$passwort = $HTTP_POST_VARS['passwort'];

if (!isset($nickname) OR !isset($email) OR !isset($passwort))
   {
   die ("Hmm, du hast irgendwas nicht eingegeben! <a href=\"anmelden.php\">Züruck</a>");
   }
Tarlar
 
Posts: 9
Joined: 26. April 2005 15:14

Postby Wiedmann » 26. April 2005 17:06

Du weist aber was isset() macht?

--> isset() überprüft ob eine Variable vorhanden ist, und nicht ob sie auch einen Wert hat.

$nickname = $HTTP_POST_VARS['nickname'];
$email = $HTTP_POST_VARS['email'];
$passwort = $HTTP_POST_VARS['passwort'];

Mit diesen 3 Zeilen stellt du ja schonmal sicher, dass die Variablen auf jeden Fall vorhanden sind.

Wenn es Formularfelder mit diesen Namen gibt, dann wären diese Variablen im Script bei register_globals=on auch ohne diese 3 Zeilen vorhanden.

(BTW: bei leeren Textfeldern kommt es auf den Browser darauf an, ob er das Feld mit einem Leerstring schickt oder gar nicht)
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Tarlar » 26. April 2005 17:18

Ich machs jetzt einfach mit

Code: Select all
if ($nickname == "" OR $email == "" ........)
   {
   die (".....");
   }
Tarlar
 
Posts: 9
Joined: 26. April 2005 15:14

Postby Wiedmann » 26. April 2005 17:49

auch 'ne Möglichkeit.

Bervorzugen würd ich da z.B. sowas:
Code: Select all
if (empty($_POST['nickname']) || empty($_POST['email']) || empty($_POST['passwort'])) {
    echo 'Hmm, du hast irgendwas nicht eingegeben! <a href="anmelden.php">Zurück</a>';
    exit;
} else {
    $nickname = $_POST['nickname'];
    $email = $_POST['email'];
    $passwort = $_POST['passwort'];
}
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to PHP

Who is online

Users browsing this forum: No registered users and 21 guests