Ce face setrawcookie
setcookie trece valoarea prin urlencode, deci tema=dark ajunge în browser ca tema%3Ddark. setrawcookie trimite valoarea neschimbată. Este necesară când un alt program (JavaScript, un server din alt limbaj) citește cookie-ul și se așteaptă la formatul exact.
Pentru că nu se face nicio codare, valoarea nu poate conține spații, virgule, punct și virgulă sau linii noi. Parametrii și opțiunile sunt aceleași ca la setcookie.
Parametri
| Parametru | Descriere |
|---|---|
$name |
Numele cookie-ului. |
$value |
Valoarea, trimisă exact așa. Fără spații, , sau ;. |
$expires_or_options |
Timestamp-ul expirării sau tabloul de opțiuni (expires, path, domain, secure, httponly, samesite). |
$path, $domain, $secure, $httponly |
Opțiunile în forma veche, ca parametri separați. |
Ce returnează
true dacă antetul a fost pregătit, false dacă ieșirea a început deja.
Exemple
Exemplul 1: Diferența față de setcookie
<?php
setrawcookie("preferinte", "tema=dark", ["path" => "/"]);
setcookie("preferinte2", "tema=dark", ["path" => "/"]);
Răspunsul HTTP primit de browser
Set-Cookie: preferinte=tema=dark; path=/
Set-Cookie: preferinte2=tema%3Ddark; path=/
Exemplul 2: Valoare cu spațiu
<?php
try {
setrawcookie("oras", "Baia Mare");
} catch (ValueError $e) {
echo get_class($e) . "\n";
echo rawurlencode("Baia Mare");
}
Rezultat
ValueError
Baia%20Mare
Greșeli frecvente
- Trimiți o valoare cu spații sau diacritice. PHP aruncă
ValueError. Codează valoarea curawurlencodesau foloseștesetcookie.
Comenzi înrudite
setcookie: Trimite browserului un cookie: o valoare mică pe care browserul o păstrează și o trimite înapoi la fiecare cerere.rawurlencode / rawurldecode: Codează un text pentru URL după standardul RFC 3986: spațiul devine %20. Se folosește pentru bucățile din calea adresei.header: Trimite un antet HTTP către browser: redirecționare, tipul conținutului, descărcare de fișier, cache.