PHP 8.4.0 RC4 available for testing

setrawcookie

(PHP 5, PHP 7, PHP 8)

setrawcookieBir çerezi değerini URL kodlamasından geçirmeden gönderir

Açıklama

setrawcookie(
    string $isim,
    string $değer = ?,
    int $süreler_veya_seçenekler = 0,
    string $yol = ?,
    string $alan = ?,
    bool $güvenli = false,
    bool $sadece_http = false
): bool

PHP 7.3.0 ve sonrasında böyle de kullanılabilir (isimli bağımsız değişkenler desteklenmiyor):

setrawcookie(string $isim, string $değer = ?, array $seçenekler = []): bool

setrawcookie() işlevi, çerez değerini tarayıcıya gönderirken otomatik olarak URL kodlamasından geçirmemesi dışında setcookie() işlevine benzer.

Bağımsız Değişkenler

Bağımsız değişken bilgileri için setcookie() belgesine bakınız.

Dönen Değerler

Başarı durumunda true, başarısızlık durumunda false döner.

Sürüm Bilgisi

Sürüm: Açıklama
7.3.0 seçenekler dizisini destekleyen ek bir yöntem tanımı eklendi. Dizi içinde SameSite çerezinin değerleri de destekleniyor.

Ayrıca Bakınız

add a note

User Contributed Notes 4 notes

up
25
Brian
18 years ago
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.
up
11
subs at voracity dot org
17 years ago
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().
up
0
Sebastian
13 years ago
You really shouldn't use (un)serialize with cookies. An evil user could inject ANY code in your script.
up
-3
sageptr at gmail dot com
12 years ago
If you want to pass something and unserialize later, you should somehow sign value to ensure evil user don't modify it.
For example, calculate hash sha1($value.$securekey) and place it to different cookie. If cookie value mismatch hash - simple discard both.
This technique you can use in any case if you want to protect cookie from modification, but it can't protect from deletion or from setting to other valid cookie (old or stolen from other user).
To Top