php - terceros - habilitar cookies firefox 2018
Problema de cookies PHP, funciona en Firefox no en otro navegador (5)
Tengo un problema con la configuración de cookies en php. Debo decir que no tengo mucha experiencia con php, así que tal vez sea un problema muy estúpido.
Tengo un sistema de clasificación de ajax que debería verificar una cookie para ver si la foto ya ha sido votada.
La página llamada con ajax comprueba la cookie, agrega el ID de la foto que estás votando y llama a esta función:
setcookie("Name", $cookie, time()+(60*24*365), "/", $_SERVER[''HTTP_HOST''], 0);
La página que muestra la foto también llama a la cookie
$cookie = $_COOKIE[''Name''];
y verifique si ya votó.
Un problema puede ser el hecho de que la página de Ajax está en un directorio diferente al de la página que muestra la foto.
La página que muestra la foto está en el directorio raíz, la página que arroja el voto está en /ajax/vote.php
El sistema de votación funciona, antes de verificar las direcciones IP, pero sé que necesito verificar las cookies.
Funciona en Firefox sin ningún problema, pero cuando comencé a probar IE y Safari parece que no ven la cookie.
Lo he comprobado con IECookieViewer y cuando emito un voto la cookie se crea correctamente, pero cuando vuelvo a la página, parece que la página no encuentra la cookie. Además, si emito otro voto, la cookie se reemplaza por una nueva.
Perdón por el inglés malo, espero que el problema sea comprensible
PD: Olvidé señalar algo que podría estar relacionado con el problema. La página está dentro de un iframe.
¿Estás configurando la cookie exactamente en la misma URL? Si usa $_SERVER[''HTTP_HOST'']
, un navegador puede configurarlo para http://example.com, mientras que otro puede configurarlo en http://www.example.com . Si visita la versión alternativa, la cookie no se establecerá.
Para citar los documentos de PHP :
El dominio que la cookie está disponible. Para que la cookie esté disponible en todos los subdominios de example.com, debe establecerla en ''.example.com''. Los . no es necesario, pero lo hace compatible con más navegadores. Configurarlo en www.example.com hará que la cookie solo esté disponible en el subdominio www.
Por lo tanto, intente configurar ''.yoursite.com'' como el dominio.
Otras cosas para probar:
- $ name es el único parámetro requerido en la función setcookie: intente omitir todo después de que $ expire y vea si funciona.
- Intente establecer un valor de $ expire en el futuro. Tal vez hay algo en su computadora o el servidor que causa un problema de tiempo?
- ¿Has registrado tu navegador si definitivamente se está configurando la cookie? Debería haber una forma de enumerar cada conjunto de cookies. Configura la cookie y revisa tu navegador.
El IFRAME es la razón por la que se están perdiendo sus cookies. Su cookie de identificación de sesión PHP también se está perdiendo y se crea una nueva sesión en cada solicitud, perdiendo así la pista del estado anterior.
Si bien los encabezados P3P pueden ayudar, los navegadores de los clientes aún pueden configurarse para que no permitan las cookies de terceros y P3P no puede anularlos. Steve Gibson de Security Now! La fama del podcast recomienda repetidamente habilitar el bloqueo de cookies de terceros porque detiene cosas como el seguimiento de cookies.
Lo que debe hacer es cambiar a la identificación de la sesión basada en el formulario. PHP lo hace fácil al proporcionar la variable de formulario "PHPSESSID" en la querystring o en la variable de formulario de entrada oculta con el valor de session_id()
. O si desea ser portátil, verifique el valor de ini_get(''session.name'')
caso de que el servidor web esté configurado con un nombre de variable de sesión personalizado, diferente de "PHPSESSID".
Tuve un problema similar en el pasado donde las cookies las configuraba Firefox pero no IE si estaba trabajando con un servidor de red local (192.168.0.102 o algo así) pero cuando lo transfería al servidor público con un nombre de dominio funcionó bien.
IE podría tener algún tipo de reglas extrañas sobre las cookies y los nombres de dominio. No estoy seguro si esto ayuda en su caso.
problema en cookies para ie SOLUCIONADO: problema en las cookies por ejemplo SOLUCIONADO:
Es SIMPLE, cuando declaren la cookie y escriben en el EXPIRE: time () + 60 * 60 * 24 * 30, cambien los 60 por 120 asi: time () + 120 * 120 * 24 * 30. A m''i me funcion''o a la perfeccion.
Es simple, cuando declaras la cookie, en el tiempo de caducidad "time () + 60 * 60 * 24 * 30", cambia los 60 por 120 entonces: time () + 120 * 120 * 24 * 30. Funcionó para mí
Compruebe la configuración de las cookies de los otros navegadores y si están configuradas para bloquear todas o vacías al salir.
Si las cookies funcionan en un navegador, pero no en otro, deberá asegurarse de que el otro navegador le permita establecer cookies en primer lugar.
A veces parecerá que puedes crear la cookie, pero luego desaparecerá o se eliminará con cada recarga de página.
Cookies de un iframe
También es posible que al configurar las cookies en un iframe, los navegadores puedan verlo como una cookie de terceros y rechazarlo a menos que se establezca explícitamente en las preferencias del navegador para permitir cookies de terceros .
En ese caso, necesitaría una política de privacidad compacta (o un encabezado P3P compacto ) en las páginas desde las que intenta configurar las cookies.
Para PHP, debe agregar esto como encabezado para la página que configura la cookie:
header(''P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'');