2010-01-10 22 views
10

Ok, tengo un conjunto de cookies, y puedo verlo claramente si voy a datos privados en Firefox ... vale, así que cuando lo echo en una página en cierto directorio funciona, (www.example.com/dir), pero en la página de índice del sitio (www.example.com) no se repetirá, dice que la cookie no está configurada. Sí, tengo las cookies habilitadas, sí, intenté borrar el caché y todo eso. ¿Algunas ideas? PHP por errorCookies que no funcionan en diferentes páginas

+0

Usted puede encontrar [ '$ Cookie-> setPath ($ path)'] (https://github.com/delight-im/ PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php # L104) útil, como se encuentra en [esta biblioteca independiente] (https://github.com/delight-im/PHP-Cookie). – caw

Respuesta

17

¿En qué directorio se encuentra cuando se establece la cookie?

Desde el, la mía PHP manual on setcookie() énfasis:

Ruta

La ruta en el servidor en el que estará disponible en la cookie. Si se establece en '/', la cookie estará disponible dentro de todo el dominio. Si se establece en '/ foo /', la cookie solo estará disponible en el directorio/foo/y en todos los subdirectorios, como/foo/bar/of domain. El valor predeterminado es el directorio actual que la cookie se está estableciendo en.

2

Debe verificar la ruta de acceso de la cookie.

Si no es '/', ¡hay una respuesta!

15

cookies se pueden unir a un dominio específico, subdominio, trayectoria, y el protocolo (HTTP/HTTPS). Es necesario especificar la ruta de acceso al establecer la cookie en PHP:

setcookie("TestCookie", "Value", time()+3600 , '/'); 

El cuarto parámetro se une a la raíz del sitio y que estará disponible en cualquier subdirectorio del sitio principal.

Si desea que esté disponible en el dominio principal y cualquier subdominio, proporcione el quinto parámetro así:

setcookie("TestCookie", "Value", time()+3600 , '/', '.example.com'); 

Ahora se podrá leer en:

www.example.com
example.com/newdir
awesome.example.com/newdir

+0

Agregar el '/', '.example.com' al final resolvió este problema para mí – Nate

0

Debe configurar $ ruta a/en setcookie(), si desea acceder a ella en todos los directorios

1

Establezca su opción de ruta; el valor predeterminado es el directorio actual en el que se está configurando la cookie. Dado que está configurando la cookie en el directorio/directorio, solo está disponible dentro de ese directorio o debajo de él.

Puede solucionar esto estableciendo explícitamente la ruta, es decir.

setcookie(name,value,expire,path,domain,secure) 

Establezca la ruta a "/".

+0

Escribo WAY too slow. – Erik

3

Sí, inténtelo, yo también estaba enfrentando este problema pero resuelto por el siguiente código.

setcookie("TestCookie", "Value", time()+3600 , '/'); 
0

¡Las cookies se deben establecer antes de la salida de página! Como las secuencias de comandos son enviadas por el script al navegador en los encabezados HTTP, antes de enviar su página, deben establecerse en antes de enviar una sola línea de HTML o cualquier otra salida de la página. En el momento en que envía cualquier tipo de salida, está señalando el final de los encabezados HTTP. Cuando eso sucede, ya no puede establecer ninguna cookie. Si lo intenta, la función setcookie() devolverá FALSE, y la cookie no se enviará.

+0

Lea esto: http://www.thesitewizard.com/php/set-cookies.shtml –

0
setcookie('cookie_username', $cookie_username, time() + (86400 * 30), "/"); // 86400 = 1 day, '/' denotes cookie available in entire directory. 

y en otra página:

$username = $_COOKIE['cookie_username']; 

También asegúrese de que el navegador no esté bloqueando las cookies.

Si desea utilizar cookies en la sub dominio también:

setcookie('cookie_username', $cookie_username, time() + (86400 * 30), "/", ".subdomain.com"); // 86400 = 1 day, '/' denotes cookie available in entire directory. 
Cuestiones relacionadas