php $_COOKIE isset
Bin ich mit diesem code, um ein cookie zu setzen und dann zu sehen, wenn Sie vorhanden sind
setcookie("token", "value", time()+60*60*24*100, "/");
setcookie("secret", "value", time()+60*60*24*100, "/");
setcookie("key", "value", time()+60*60*24*100, "/");
if (!isset($_COOKIE['token']) || !isset($_COOKIE['secret']) || !isset($_COOKIE['key'])) {
//do something because one of the cookies were not set
}
Obwohl alle drei die cookies in meinem browser, es läuft immer noch die if()
- Anweisung. Über den Prozess der Beseitigung, habe ich entdeckt, der Mitte-cookie !isset($_COOKIE['secret'])
zu verursachen scheint die if()
- Anweisung ausgeführt, obwohl der cookie secret
wurde in meinem browser. Das script sagt, es wurde nicht festgelegt, wenn ich mir meine browser und es wurde eingestellt. Können Sie aus irgendeinem Grund denken, warum php sagt, dass es nicht eingestellt?
- dein code funktioniert bei mir. der block ausgeführt auf den ersten Besuch als $_COOKIE ist nicht gefüllt mit den Werten von setCookie, noch. auf weitere Anrufe, wird der block nicht mehr ausgeführt. haben Sie, durch Zufall, installiert einen cookie-blocker?
- Welches tool werden Sie verwenden, um zu sagen, ob das cookie vorhanden ist? Firebug? Scheint ziemlich seltsam...
Du musst angemeldet sein, um einen Kommentar abzugeben.
setcookie
definiert nur ein cookie gesendet werden, zusammen mit dem rest der HTTP-Header, und auf Sie zugegriffen werden kann auf das laden der nächsten Seite mit der$_COOKIE
. Mit Ihrem code, der HTTP-Header nicht gesendet werden.Brauchen Sie nur
setcookie
werden, wenn ein cookie nicht gesetzt ist. Wie:setCookie
und verschieben Sie die Benutzer auf die gleiche Seite wieder mitheader()
.setcookie("token", "value");
dann$_COOKIE['token'] = "value";
verwenden
array_key_exists($_COOKIE, 'secret') === isset($_COOKIE['secret'])
und der OP hat' möchten Sie prüfen, ob es leer war. das Problem bleibt immer nocharray_key_exists
übernimmt auch$_COOKIE
ein array. wenn nicht, dannarray_key_exists
tritt ein Fehler mit einer Warnung. aber wir können sicher davon ausgehen, dass $_COOKIE-Typ-array für jedes Skript. wir können auch davon ausgehen, dass die Werte im $_COOKIE-Zeichenfolgen sind, wie Sie übergeben bekommen, die in der HTTP-Anfrage. also, wenn mit $_COOKIE diese beiden Aufrufe sind in der Tat die gleichen, es sei denn, du bastelst mit $_COOKIE vorher.array_key_exists
ist rückwärts im Beispiel. Es solltearray_key_exists('secret', $_COOKIE)
.