setcookie no funciona cuando se define con '/' pero funciona si no se define

11 ene 2015, 18:58:10
Vistas: 19K
Votos: 0

Tengo un problema muy extraño. Tengo este código en mi functions.php. Seguí las instrucciones y coloqué este código en el functions.php que estaba disponible en la carpeta de mi tema en wp-content/themes/u-design/functions.php. Para referencia, mi tema es u-design.

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

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

Lo que hace este código es obtener el valor de una cadena de consulta y colocar ese valor en una cookie, por ejemplo:

www.misitio.com/?test=prueba

Sin embargo, no funciona. Pero cuando cambio el código a:

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

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

¡La cookie se establece! ¿Por qué está pasando esto?

Actualmente, con el segundo método, aunque la cookie se establece, no puedo usarla ya que $_cookie['test'] no devuelve el valor de la cookie. Según lo que investigué, esto se debe a que la cookie solo se establece en la ruta actual. Para usar $_cookie['myCookie'], debes configurar la cookie para que esté disponible en todo el dominio. Sin embargo, si hago eso, como en el primer método, ¡la cookie no se establece en absoluto!

¿Alguien sabe por qué está pasando esto y cómo solucionarlo? Gracias.

mwh
mwh
1
Comentarios

Tu código me da Errores Fatales en general, supongo que es por el nombre de la función. ¿Es ese el nombre real que estás intentando usar?

Rarst Rarst
11 ene 2015 19:59:57

oh no, edité el nombre de la función. En realidad estoy usando otro nombre. Edité el post para que quede más claro. ¡Perdón!

mwh mwh
11 ene 2015 20:25:57

¿Qué pasa si usas la constante COOKIEPATH?

Milo Milo
11 ene 2015 20:36:17

Esta es una pregunta genérica de PHP, no veo dónde WordPress está involucrado en tu problema. De todos modos, tu código funciona perfectamente. No puedes usar $_cookie['test'] porque el nombre de la cookie no es "test", es "mycookie".

cybmeta cybmeta
11 ene 2015 21:53:35

Verifiqué mi código nuevamente y fue solo un error al escribir mi pregunta. Mis disculpas, estaba usando $_cookie['myCookie'] y no funcionaba, por lo que mi pregunta sigue en pie. Además, también verifiqué si la cookie estaba configurada y no lo está, ¿no indica eso un error en el método setcookie? La línea de código que incluye '/' como cuarto parámetro no funciona, mientras que la línea de código que solo tiene tres parámetros (el segundo ejemplo) sí funciona para configurar la cookie.

mwh mwh
11 ene 2015 22:21:34

Quizás no sea un problema de WordPress, pero como dicen todas las guías que he leído sobre cómo configurar cookies en PHP, y como tú también mencionas que el código debería funcionar perfectamente, no estaba seguro si hay algo en WordPress que lo impida. He probado setcookie y $_cookie directamente en un archivo PHP vacío que solo contenía esos dos métodos y allí funciona bien, por lo que estoy considerando la posibilidad de que el error esté en otro lugar.

mwh mwh
11 ene 2015 22:33:37

revisa este enlace http://allinonescript.com/questions/8890115/php-cookies-are-not-being-set

Vadivel S Vadivel S
4 oct 2017 09:08:35
Mostrar los 2 comentarios restantes