Ciao a tutti,
si può utilizzare il carattere asterisco nel nome della cookie quando si crea?
Grazie,
Roberto
Ciao a tutti,
si può utilizzare il carattere asterisco nel nome della cookie quando si crea?
Grazie,
Roberto
Nessun nome di file può contenere il carattere *, così come anche ? \ / | " : < > essendo caratteri jolly o che hanno un loro significato all'interno dei path.
Ultima modifica di Alhazred; 10-06-2021 a 14:15
Certo che puoi:
Per completezza:codice:$cookieName = '*?\/|":<>'; setcookie($cookieName, 'Hello World!'); if (isset($_COOKIE[$cookieName])) { die($_COOKIE[$cookieName]); } print('Refresh!');
https://datatracker.ietf.org/doc/htm...#section-4.1.1
https://datatracker.ietf.org/doc/htm...16#section-2.2
token = 1*<any CHAR except CTLs or separators>
CHAR = <any US-ASCII character (octets 0 - 127)>
Ultima modifica di filippo.toso; 11-06-2021 a 10:20
Stando alla definizione di token data dalla RFC, un token è composto da 1 o più CHAR con l'esclusione dei caratteri di controllo e i separatori. Sempre dalla RFC la definizione di separatore è la seguente:
codice:separators = "(" | ")" | "<" | ">" | "@" | "," | ";" | ":" | "\" | <"> | "/" | "[" | "]" | "?" | "=" | "{" | "}" | SP | HT
Questo è in conflitto con l'esempio postato da filippo.toso (che ha usato parecchi caratteri definiti come SEPARATORI senza per questo aver avuto alcun problema).
Fa riflettere sta cosa...
Rimane assodato che (stando alla definizione) l'asterisco non è tra i caratteri esclusi, ma non mi pare ci si possa fidare di nulla.
A meno che la definizione non sia da intendersi come "1 o più CHAR o SEPARATORI con esclusione dei caratteri di controllo"... ambiguità? Boh... se così fosse io avrei scritto
codice:token = 1*<any CHAR or separators except CTLs>
Avrebbe più senso la prima interpretazione, non la seconda.
Edit: potrebbe essere corretta la seconda interpretazione, dove l'except è riferito alla definizione di CHAR e l'or serve ad aggiungere un set di caratteri valido.
Ultima modifica di LeleFT; 11-06-2021 a 11:42
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Dipende, comunque, da come la si interpreta.
"any CHAR except CTLs or separators"
Può essere interpretata così:
any CHAR (except CTLs or separators)
oppure così:
any CHAR (except CTLs) or separators
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Se si tenta di creare un cookie con caratteri non validi PHP solleva un warning:
codice:Warning: Cookie names cannot contain any of the following '=,; \t\r\n\013\014'
Quindi qualcuno deve spiegarmi perchè i caratteri "," e ";" non sono considerati validi, mentre "<" e ">", "?", ":", "\" e "/" sì (stando al tuo esempio) dato che TUTTI fanno parte dei cosiddetti "separatori" (come da definizione in RFC).
Ultima modifica di LeleFT; 11-06-2021 a 12:44
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Una RFC uniforma la sintassi, mentre funzioni il contesto e per php sono validi tutto eccetto i caratteri del warning mostrato.
Un array php non può contenere un punto (e forse anche altri byte) nella propria definizione di chiave, altresì la funzione setcookie prima di php 7.2 usa il percent enconding.
setrawcookie() is exactly the same as setcookie() except that the cookie value will not be automatically urlencoded when sent to the browser.
Note: Using separator characters such as [ and ] as part of the cookie name is not compliant to RFC 6265, section 4, but supposed to be supported by user agents according to RFC 6265, section 5. Dicasi array multidimensionale per php ed è valido $_COOKIE['test'][0] e giustamente altri indici o chiavi in comune con il name della funzione setcookie.
Codice C funzione setcookie php
https://github.com/php/php-src/blob/...ard/head.c#L79
Ultima modifica di darbula; 12-06-2021 a 02:56
Un array php non può contenere un punto (e forse anche altri byte) nella propria definizione di chiave
Da quando?
Inoltre:codice:$test = [ '.' => 'Hello World!', ]; print($test['.']);
codice:$test = []; for ($i = 1; $i < 256; $i++) { $test[chr($i)] = '#' . $i; } var_dump($test); print("\r\n######\r\n"); print($test[chr(136)]);