setcookie non funziona quando definito con '/' ma funziona se non definito

11 gen 2015, 18:58:10
Visualizzazioni: 19K
Voti: 0

Ho un problema molto strano. Ho questo codice nel mio functions.php. Ho seguito le istruzioni e ho inserito questo codice nel functions.php disponibile nella cartella del mio tema in wp-content/themes/u-design/functions.php. Per riferimento, il mio tema è u-design.

add_action('init', 'setmyCookie');
function setmyCookie(){
    //if(!isset($_COOKIE['myCookie'])){

        setcookie('myCookie', $_GET['test'], time() + 63072000, '/');
    //}
}

Quindi quello che fa è prendere il valore da una query string e inserire quel valore in un cookie, ad esempio

www.miosito.com/?test=test

Tuttavia, non funziona. Ma quando cambio il codice in

add_action('init', 'setmyCookie');
function setmyCookie(){
    //if(!isset($_COOKIE['myCookie'])){

        setcookie('myCookie', $_GET['test'], time() + 63072000);
    //}
}

Il cookie viene impostato! Perché succede questo?

Attualmente, con il secondo metodo, anche se il cookie viene impostato, non riesco a usarlo perché $_cookie['test'] non restituisce il valore nel cookie. Da quello che ho cercato su Google, questo accade perché il cookie viene impostato solo nel percorso corrente. Per usare $_cookie['myCookie'], devi impostare il cookie in modo che sia disponibile in tutto il dominio. Tuttavia, se lo faccio, come nel primo metodo, il cookie non viene impostato affatto!

Qualcuno sa perché succede questo e come risolverlo? Grazie.

mwh
mwh
1
Commenti

Il tuo codice genera Fatal Errors per me, immagino a causa del nome della funzione. È il nome effettivo che stai cercando di utilizzare?

Rarst Rarst
11 gen 2015 19:59:57

Oh no, ho modificato il nome della funzione. In realtà sto usando un altro nome. Ho modificato il post per renderlo più chiaro. Scusa!

mwh mwh
11 gen 2015 20:25:57

Cosa succede se usi la costante COOKIEPATH?

Milo Milo
11 gen 2015 20:36:17

Questa è una domanda generica su PHP, non vedo dove WordPress sia coinvolto nel tuo problema. Comunque, il tuo codice funziona perfettamente. Non puoi usare $_cookie['test'] perché il nome del cookie non è "test", bensì "mycookie".

cybmeta cybmeta
11 gen 2015 21:53:35

Ho ricontrollato il mio codice ed era solo un errore mentre scrivevo la domanda. Mi scuso, stavo usando $_cookie['myCookie'] e non funzionava, quindi la mia domanda rimane valida. Inoltre, ho anche verificato se il cookie fosse stato impostato e non lo è, questo non indica forse un errore nel metodo setcookie? La riga di codice che include '/' come quarto parametro non funziona, mentre la riga con solo tre parametri (il secondo esempio) riesce a impostare il cookie.

mwh mwh
11 gen 2015 22:21:34

Forse non è un problema di WordPress, ma come indicano tutte le guide che ho letto sull'impostazione dei cookie in PHP, e come anche tu affermi che il codice dovrebbe funzionare perfettamente, ero incerto se ci fosse qualcosa in WordPress che ne impedisse il funzionamento. Ho testato setcookie e $_cookie direttamente in un file PHP altrimenti vuoto, contenente solo quei due metodi, e lì funziona bene, quindi sto considerando la possibilità che l'errore sia altrove.

mwh mwh
11 gen 2015 22:33:37

controlla questo link http://allinonescript.com/questions/8890115/php-cookies-are-not-being-set

Vadivel S Vadivel S
4 ott 2017 09:08:35
Mostra i restanti 2 commenti