prüfen ob Cookie da ist
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
angegeben code
array
atomkraft
code
existenz
existiert code
http
inhalt
leerer string
leeres array
manual
null
session
sparen
string
test
unterschiedliche funktionen
url
wert null
wesentliche unterschied
-
Hallo
wenn ich prüfen will, ob ein bestimmtes Cookie existiert
if (isset($_COOKIE['test']) { ... }
oder
if (!empty($_COOKIE['test']) { ... }
was ist besser? oder macht das keinen Unterschied ?!
weil wenn man $_SESSION mit !empty prüft,
aber gar keine Session gestartet wurde
dann gibts ja ne Fehlermeldung,
und bei isset() gibt keinen Fehler .... oder ?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
isset und empty sind zwei unterschiedliche Funktionen ;) Ich verwende zur Überprüfung meist beides
1. überprüfen, ob Cookie/Session gesetzt wurde (isset)
2. überprüfen, ob Cookie/Session leer ist (empty)
Ergo:
if (isset($_COOKIE['test']) && !empty($_COOKIE['test'])) { ... }
Beitrag zuletzt geändert: 2.1.2012 19:14:18 von fabo -
@fabo: Das kannst du dir sparen.
empty() gibt nämlich auch dann true zurück, wenn der Cookie nicht existiert.
reicht also völlig.if (!empty($_COOKIE['test'])) { ... }
Der wesentliche Unterschied ist einfach, dass empty() auch dann true widergibt, wenn die Variable ein leerer String ist.
Beitrag zuletzt geändert: 2.1.2012 21:04:44 von anti-atomkraft -
anti-atomkraft schrieb:
@fabo: Das kannst du dir sparen.
empty() gibt nämlich auch dann true zurück, wenn der Cookie nicht existiert.
reicht also völlig.if (!empty($_COOKIE['test'])) { ... }
Der wesentliche Unterschied ist einfach, dass empty() auch dann true widergibt, wenn die Variable ein leerer String ist.
Du verwechselt gerade empty mit isset.
isset gibt true zurück, wenn die Variable exisiert, auch wenn sie leer ist.
empty gibt true zurück, wenn die Variable exisiert und nicht leer('', 0, false, NULL zählen als leer) ist.
Deswegen reicht empty wenn man eine Variable auf Existenz und Inhalt prüft.
if (!empty ($_GET['test'])) echo 'test enthält keinen Wert oder wurde nicht angegeben';
Edit:Falsche BB-Tags
Beitrag zuletzt geändert: 2.1.2012 21:53:01 von chatter -
chatter schrieb:
Da verwechselt jemand noch etwas:
anti-atomkraft schrieb:
@fabo: Das kannst du dir sparen.
empty() gibt nämlich auch dann true zurück, wenn der Cookie nicht existiert.
reicht also völlig.if (!empty($_COOKIE['test'])) { ... }
Der wesentliche Unterschied ist einfach, dass empty() auch dann true widergibt, wenn die Variable ein leerer String ist.
Du verwechselt gerade empty mit isset.
isset gibt true zurück, wenn die Variable exisiert, auch wenn sie leer ist.
empty gibt true zurück, wenn die Variable exisiert und nicht leer('', 0, false, NULL zählen als leer) ist.
Deswegen reicht empty wenn man eine Variable auf Existenz und Inhalt prüft.
if (!empty ($_GET['test'])) echo 'test enthält keinen Wert oder wurde nicht angegeben';
Edit:Falsche BB-Tags
empty gibt (wie der Name schon sagt) dann true zurück wenn die Variable NICHT existiert ODER leer ist ('', 0, 0.0, false, NULL, array()).
Dabei ist noch wichtig dass ein String mit dem Inhalt "0" auch als leer gewertet wird!
isset:
Prüft, ob eine Variable existiert und nicht NULL ist.
Wer das Internet nutzen kann ist klar im Vorteil.
@chatter:
Dein Code mal ausgebessert:if (!empty ($_GET['test'])) echo 'test existiert und enthält einen Wert';
@anti-atomkraft:
du hast recht. -
anti-atomkraft schrieb:
Der wesentliche Unterschied ist einfach, dass empty() auch dann true widergibt, wenn die Variable ein leerer String ist.
...
hackyourlife schrieb:
Dabei ist noch wichtig dass ein String mit dem Inhalt "0" auch als leer gewertet wird!
jetzt bin ich verwirrt ...
laut der Aussagen gibt empty() TRUE zrrück wenn Leerstring, aber FALSE bei Wert: 0 ????
entsprechend umgekehrt mit !empty()
mal ein Test
<?php $test1 = ''; // Leerstring $test2 = '0'; // Wert 0 (Null) $test3 = null; // NULL if (!empty($test1)) { $out1 = "TEST1 ist nicht leer."; } else { $out1 = "TEST1 ist leer."; } if (!empty($test2)) { $out2 = "TEST2 ist nicht leer."; } else { $out2 = "TEST2 ist leer."; } if (!empty($test3)) { $out3 = "TEST3 ist nicht leer."; } else { $out3 = "TEST3 ist leer."; } echo "<br />".$out1."\n"; echo "<br />".$out2."\n"; echo "<br />".$out3."\n"; ?>
kann ich auf lima-city grad nicht testen, bekomme kein FTP
aber bei anderem Freehoster (mit PHP Version 5.2.17)
Ergebnis:
TEST1 ist leer. TEST2 ist leer. TEST3 ist leer.
also doch alle als Leer erkannt, auch Leerstring ?
? -
Nicht definierte Variable in isset() : false
Definierte aber leere / negative Variable in isset() : true
Mit einem positiven Wert gefüllte Variable in isset() : true
Nicht definierte Variable in empty() : true
Definierte aber leere / negative Variable in empty() : true
Mit einem positiven Wert gefüllte Variable in empty() : false
Folgende Dinge zählen als nicht mit einem Wert belegt:
• "" (eine leere Zeichenkette)
• 0 (0 als Integer)
• 0.0 (0 als Fließkommazahl)
• "0" (0 als Zeichenkette)
• NULL
• FALSE
• array() (ein leeres Array)
• var $var; (in einer Klasse deklarierte, aber nicht belegt Variable)
Quelle: http://de3.php.net/manual/de/function.empty.php
Beitrag zuletzt geändert: 3.1.2012 15:20:08 von drafed-map -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage