establecer la cookie PHP al hacer clic

Así que preferiría no utilizar JS / jQuery para esto, pero parece que no puedo hacer que esto funcione.

Tengo un enlace Hide Updates que bash establecer una cookie.

 if($_GET['hideupdates'] == 'hide'){ setcookie("HideUpdates", "hide", time()+60*60*24*5, "/", $vars->networkSite); } 

“funciona”, pero tengo que hacer clic en el enlace dos veces.


de ” site.com ” puedo var_dump() la cookie y aparece NULL

Ahora hago clic en el enlace y voy a ” site.comhttps://stackoverflow.com/?hideupdates=hide ” y la cookie sigue apareciendo NULL

Sin embargo, desde ” site.comhttps://stackoverflow.com/?hideupdates=hide ” cuando vuelvo a hacer clic en el enlace, ENTONCES la cookie vuelve hide .

¿Me estoy perdiendo de algo? ¿O ‘tengo’ que usar JS / jQuery para esto?

setcookie no afecta la solicitud actual. Para hacer eso, también necesita configurar manualmente la variable $_COOKIE relevante:

 setcookie("HideUpdates",$_COOKIE['HideUpdates'] = "hide", time()+60*60*24*5, "/", $vars->networkSite); 

La única forma de hacerlo es JS o jQuery porque, como dicen las demás personas, las cookies no afectan la solicitud de la página actual.

Necesita el complemento de cookie jquery para la solución jQuery. Algunos servidores tienen problemas con jquery.cookie.js (La solución es cambiar el nombre del archivo, por ejemplo: jquery.cook.js)

Uso del plugin de la cookie jquery

Crear una cookie de sesión

  $.cookie('the_cookie', 'the_value'); 

Crea una cookie vencida, 7 días después:

  $.cookie('the_cookie', 'the_value', { expires: 7 }); 

Crear una cookie vencida, válida en todo el sitio:

  $.cookie('the_cookie', 'the_value', { expires: 7, path: '/' }); 

Leer cookie:

  $.cookie('the_cookie'); // => "the_value" $.cookie('not_existing'); // => undefined 

Lee todas las cookies disponibles:

  $.cookie(); // => { "the_cookie": "the_value", "...remaining": "cookies" } 

Eliminar cookie:

  // Returns true when cookie was found, false when no cookie was found... $.removeCookie('the_cookie'); 

// Mismo camino que cuando se escribió la cookie …

  $.removeCookie('the_cookie', { path: '/' }); 

Puedes probar localStorage. Funciona en Chrome, FF e IE9 en adelante. ¡No somos compatibles con IE7-10! ¡Hurra!

IE8 tiene algunos problemas con localStorage.

El script debe estar dentro de $ (document) .ready (function () {});

 $(document).ready(function() { $("#btnClick").click(function(e) { e.preventDefault(); localStorage.setItem('cookieName', 'cookie_value'); window.href.location = "your_new_page.php"; }); //On the same page or other page if (localStorage.getItem('cookieName')){ //do here what you want }else{ //do something else } }); 

Las cookies no se activan hasta que se configuran y se envía una nueva solicitud de página. Esto se debe a que las cookies se envían con solicitudes de página, simplemente no aparecen mágicamente en el servidor.

Su solución es hacer una actualización de página después de configurar la cookie.