Come accedere ai cookie valori diversi percorsi dello stesso dominio utilizzando PHP?

Può un parametro di percorso essere aggiunto a $_COOKIE[]?

InformationsquelleAutor Steven | 2009-12-28

 

5 Replies
  1. 9

    Nel caso In cui si sta tentando di accedere ai cookie impostato per un percorso diverso sullo stesso dominio di corrente, che non può essere fatto. Il browser stesso limita a questo, e solo invia il cookie appropriato per il percorso corrente.

    • cosa su facebook?, facebook scrive cookie di dominio “facebook.com” ma usa questo cookie da “www.facebook.com”
    • sei sicuro? Sono abbastanza sicuro di FB imposta tutti i cookie sul http://www.facebook.com come anche non è possibile accedere facebook.com (si reindirizzare www.)
    • Questo non è corretto. Un browser seguendo le raccomandazioni del RFC non invia entrambi i valori in caso di più di un cookie con lo stesso nome ma con percorsi diversi. È, infatti, PHP, che si mette in mezzo; si prega di vedere il mio inviato la risposta.
  2. 5

    Mentre il client HTTP (es: browser) non inviare di nuovo il percorso che il cookie è stato impostato, PHP, infatti, fa ipotesi sui cookie per quanto riguarda la sua $_COOKIE array.

    Se si imposta i due biscotti con lo stesso nome, uno con il valore di “primo valore” con percorso / e la seconda con il valore di “secondo valore” con percorso /test, un browser consigliata ma non obbligatoria – comportamento da RFC invierà entrambi i valori. Quando si accede a un URL sotto il /test percorso, il browser invia questo:

    Cookie: name=second-value, name=first-value

    Il “problema” è che PHP che legge solo il primo valore – $_COOKIE[‘nome’] conterrà solo il valore di “secondo valore” senza alcun accenno che “primo valore” esiste. Se avete bisogno di accedere a entrambi i valori, è necessario analizzare il valore di $_SERVER[‘HTTP_COOKIE’] te – contiene “name=secondo-valore, nome=primo-valore” per l’esempio di cui sopra. Nota che “secondo valore” è in prima linea, perché è stato impostato con un percorso più lungo. Si prega di notare che la RFC non garantisce questo comportamento, si dice solo che i client HTTP DOVREBBE fare questo.

    • Interessante, è specifico per le sottodirectory? Come in una richiesta di una sottodirectory riceverà il root i cookie, ma di una richiesta alla radice non ricevere cookies per la sottodirectory? Anche io sono curioso se i browser implementano questo o no 🙂
    • Corretto, una sottodirectory o percorso più lungo sarà sempre la ricezione di un cookie con un percorso più breve che corrisponde. Tutti i browser sono implementate in questo modo. L’unica cosa che non è garantita comportamento è se si dispone di più i biscotti con lo stesso nome ma diversi percorsi – è dovrebbe di ricevere entrambi i cookie in un ordine fisso, ma la RFC non fare promesse.
    • Questo è in realtà la risposta corretta in quanto fornisce una spiegazione del perché questo accade. Devo notare, e questo manca, anche se non si può dire $_COOKIE[] un percorso, si può dire setcookie un percorso. Siamo di fronte a questo con un API. Così si può effettivamente dire setcookie per impostare il percorso principale per poi accedere ovunque, in questo modo: setcookie('name', 'data', expire, '/'). Che l’ultimo parametro è il percorso e l’impostazione di / rende percorso principale. Questa sarebbe la soluzione OP problema.
    • Costruire su ciò che Nate ha ricordato il cookie di essere disponibile tramite $_SERVER[‘HTTP_COOKIE’]… utilizzare questo al posto di singoli cookie in un array: $cookies = parse_ini_string( str_replace( ";" , "\n" , $_SERVER['HTTP_COOKIE'] ) ) ;
  3. 2

    sì, è la 4 ° argomento, ma sarà solo in grado di accedere ai cookie se è stato impostato utilizzando un percorso che la directory corrente si trova in.

    che confusione… qui è da php:

    Il percorso sul server in cui il
    cookie sarà disponibile. Se impostato a
    ‘/’, il cookie sarà disponibile
    all’interno di tutto il dominio . Se impostato a
    ‘/pippo/’, il cookie sarà solo
    disponibili all’interno della directory /foo/
    e tutte le sotto-directory
    /foo/bar/dominio . L’impostazione predefinita
    valore è la directory corrente che
    il cookie viene impostato in.

    http://php.net/manual/en/function.setcookie.php

    Si accede, come qualsiasi altro biscotto. Sarà disponibile a $_COOKIE se lo script di accesso.

    • Voglio dire, come leggere, come accedere ai cookie valori in percorsi diversi ma sullo stesso nome di dominio?
    • Come distinguerli?
    • php non fare per voi. sarebbe necessario implementare autonomamente.
  4. 2

    No, tali parametri sono impossibili perché il browser non invia il percorso del server. Esso non solo inviare il nome e il valore di ogni biscotto (in modo che non si può vedere il percorso, e se è un cookie di sessione, quando scade e così via).

Lascia un commento