setcookie nu funcționează când este definit cu '/' dar funcționează fără - Soluție

11 ian. 2015, 18:58:10
Vizualizări: 19K
Voturi: 0

Am o problemă foarte ciudată. Am acest cod în functions.php. Am urmat instrucțiunile și am plasat acest cod în functions.php care era disponibil în folderul temei mele în wp-content/themes/u-design/functions.php. Pentru referință, tema mea este u-design.

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

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

Acest cod ar trebui să preia valoarea dintr-un query string și să o plaseze într-un cookie, de exemplu:

www.siteulmeu.ro/?test=test

Totuși, nu funcționează. Dar când schimb codul în:

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

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

Cookie-ul este setat! De ce se întâmplă asta?

În prezent, cu a doua metodă, deși cookie-ul este setat, nu îl pot folosi deoarece $_cookie['test'] nu returnează valoarea din cookie. Din câte am înțeles prin căutări, acest lucru se întâmplă pentru că cookie-ul este setat doar pentru calea curentă. Pentru a folosi $_cookie['myCookie'], trebuie să setezi cookie-ul astfel încât să fie disponibil pe întreg domeniul. Totuși, dacă fac asta, ca în prima metodă, cookie-ul nu este setat deloc!

Știe cineva de ce se întâmplă asta și cum să repar? Mulțumesc.

mwh
mwh
1
Comentarii

Codul tău generează erori fatale pentru mine, probabil din cauza numelui funcției. Este acesta numele real pe care încerci să-l folosești?

Rarst Rarst
11 ian. 2015 19:59:57

oh nu, am editat numele funcției. De fapt folosesc alt nume. Am editat postarea pentru a o face mai clară. Scuze!

mwh mwh
11 ian. 2015 20:25:57

Ce se întâmplă dacă folosești constanta COOKIEPATH?

Milo Milo
11 ian. 2015 20:36:17

Aceasta este o întrebare generică despre PHP, nu văd unde WordPress este implicat în problema ta. Oricum, codul tău funcționează perfect. Nu poți folosi $_cookie['test'] pentru că numele cookie-ului nu este "test", ci "mycookie".

cybmeta cybmeta
11 ian. 2015 21:53:35

Am verificat din nou codul meu și a fost doar o greșeală când am scris întrebarea. Îmi cer scuze, foloseam $_cookie['myCookie'] și nu funcționa, deci întrebarea mea rămâne valabilă. De asemenea, am verificat dacă cookie-ul a fost setat și nu este, nu indică asta o eroare la metoda setcookie? Linia de cod care include '/' ca al patrulea parametru nu funcționează, în timp ce linia de cod care are doar trei parametri (al doilea exemplu) funcționează în setarea cookie-ului.

mwh mwh
11 ian. 2015 22:21:34

Poate să nu fie o problemă specifică WordPress, dar după cum spun toate ghidurile pe care le-am citit despre setarea cookie-urilor în php și după cum spui și tu că codul ar trebui să funcționeze perfect, eram nesigur dacă există ceva în WordPress care împiedică funcționarea. Am testat setcookie și $_cookie direct într-un fișier php gol, folosind doar aceste două metode și acolo funcționează corect, așa că iau în considerare posibilitatea ca eroarea să fie în altă parte.

mwh mwh
11 ian. 2015 22:33:37

verifică acest link http://allinonescript.com/questions/8890115/php-cookies-are-not-being-set

Vadivel S Vadivel S
4 oct. 2017 09:08:35
Arată celelalte 2 comentarii