Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776

    Asterisco nel nome della cookie

    Ciao a tutti,

    si può utilizzare il carattere asterisco nel nome della cookie quando si crea?

    Grazie,
    Roberto

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    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

  3. #3
    Certo che puoi:

    codice:
    $cookieName = '*?\/|":<>';
    
    setcookie($cookieName, 'Hello World!');
    
    
    if (isset($_COOKIE[$cookieName])) {
        die($_COOKIE[$cookieName]);
    }
    
    
    print('Refresh!');
    Per completezza:

    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

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    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

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    ...
    Questo è in conflitto con l'esempio postato da filippo.toso
    ...
    E' andato sempre meglio di me che invece di cookie ho letto file

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    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

  7. #7
    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'

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    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

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    189
    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

  10. #10
    Un array php non può contenere un punto (e forse anche altri byte) nella propria definizione di chiave

    Da quando?

    codice:
    $test = [    '.' => 'Hello World!',
    ];
    
    
    print($test['.']);
    Inoltre:

    codice:
    $test = [];
    for ($i = 1; $i < 256; $i++) {
        $test[chr($i)] = '#' . $i;
    }
    
    
    var_dump($test);
    
    
    print("\r\n######\r\n");
    
    
    print($test[chr(136)]);

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.