PHP Doku:: Sendet ein Cookie, ohne seinen Wert zu URL-kodieren - function.setrawcookie.html

Verlauf / Chronik / History: (2) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzSonstige DiensteNetworkNetzwerk-Funktionensetrawcookie

Ein Service von Reinhard Neidl - Webprogrammierung.

Netzwerk-Funktionen

<<setcookie

socket_get_status>>

setrawcookie

(PHP 5)

setrawcookieSendet ein Cookie, ohne seinen Wert zu URL-kodieren

Beschreibung

bool setrawcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )

setrawcookie() ist exakt das Gleiche wie setcookie() bis auf die Tatsache, dass der Wert des Cookie nicht automatisch URL-kodiert zum Browser gesendet wird.

Parameter-Liste

Bitte schlagen Sie für Informationen über die Parameter in der Dokumentation der Funktion setcookie() nach.

Rückgabewerte

Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.

Changelog

Version Beschreibung
5.2.0 Der Parameter httponly wurde hinzugefügt.

Siehe auch


4 BenutzerBeiträge:
- Beiträge aktualisieren...
lgb
1.10.2009 10:53
After having several problems with this cookie thing, I'm using base64_encode on the data I put into a cookie, so I can avoid problems, I had before. I tried to set up cookie with data created by serialize() from a PHP array, but it did not work to be able to get it back, after I modified it to use value of base64_encode(serialize(...)) to set up the cookie, and unserialize(base64_decode(..)) to get back the value, everything started to work.
Anonymous
10.04.2008 11:01
For PHP 4 systems you can use...
<?php
header
('Set-Cookie: name=value');
?>

... but it seems to be difficult to obtain the results without PHP's automatic URL decoding :o(
subs at voracity dot org
12.12.2006 14:31
setrawcookie() isn't entirely 'raw'. It will check the value for invalid characters, and then disallow the cookie if there are any. These are the invalid characters to keep in mind: ',;<space>\t\r\n\013\014'.

Note that comma, space and tab are three of the invalid characters. IE, Firefox and Opera work fine with these characters, and PHP reads cookies containing them fine as well. However, if you want to use these characters in cookies that you set from php, you need to use header().
Brian
10.03.2006 20:56
Firefox is following the real spec and does not decode '+' to space...in fact it further encodes them to '%2B' to store the cookie.  If you read a cookie using javascript and unescape it, all your spaces will be turned to '+'.
To fix this problem, use setrawcookie and rawurlencode:

<?php
setrawcookie
('cookie_name', rawurlencode($value), time()+60*60*24*365);
?>

The only change is that spaces will be encoded to '%20' instead of '+' and will now decode properly.



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)