Das Setzen von Cookies funktioniert nicht in CodeIgniter

7

Ich möchte Cookie mit einem Namen csrf_cookie_name mit einem Wert aus dieser Funktion setzen $ this- & gt; security- & gt; get_csrf_hash (); aber das ist es nicht arbeiten.

Ich habe das in meinem Controller:

%Vor%

Aber es funktioniert nicht und es wird nichts geäußert.

Wenn ich nur das versuche:

%Vor%

Ich arbeite und eine generierte Zeichenfolge wird ausgegeben.

Ich nehme also an, dass etwas in den nächsten zwei Zeilen falsch ist:

%Vor%

Danke für Ihren Rat.

    
Derfder 16.09.2012, 12:24
quelle

3 Antworten

19

Sie müssen eine Lebensdauer für den Cookie angeben. 0 wird ein Session-Cookie sein und alles andere wird zu time() hinzugefügt.

Wenn Sie keine Lebensdauer angeben, interpretiert CI, dass Sie den Cookie löschen möchten. Und genau das tut es :)

%Vor%     
Silviu G 21.09.2012 09:26
quelle
7

Der Grund dafür, dass kein Cookie zurückgegeben wird, liegt darin, dass die $this->input->cookie() -Funktion direkt vom globalen $_COOKIE -Array gelesen wird und $this->input->set_cookie() das $_COOKIE -Array nicht sofort auf dem Server auffüllt. Stattdessen stellt $this->input->set_cookie() den Cookie so ein, dass er zurückgesendet und im Browser gespeichert wird. Nur bei der nächsten HTTP-Anfrage der Benutzer können Sie diesen Cookie erneut beobachten.

Zweitens, und vielleicht noch wichtiger, denke ich, dass Sie den csrf-Cookie nicht ordnungsgemäß verwenden. Zum Schutz vor Cross-Site-Request-Fälschungen müssen Sie es nur aktivieren und seine Eigenschaften in config/config.php festlegen. Das ist es. Es ist nicht notwendig, es in den Controllern überhaupt zu lesen und zu schreiben.

    
Jordan Arseno 16.09.2012 18:10
quelle
3

Der Cookie ist schon da. Sie können über Javascript mit:

konsultieren %Vor%

Ich hoffe, dass es nützlich ist.

    
Alfonso Rubalcava 22.09.2012 12:16
quelle

Tags und Links