php - tiempo - redireccionar html
¿Cómo puedo configurar una cookie y luego redireccionar en PHP? (5)
¿Asumo que estás ejecutando IIS? Hay un error conocido con versiones de IIS de menos de 7 cuando se intenta establecer una cookie y un encabezado de ubicación en la misma solicitud.
Después de hacer un poco de procesamiento, quiero establecer un valor de cookie para la entrada del usuario y luego redirigirlos a una página nueva. Sin embargo, la cookie no se está configurando. Si hago un comentario sobre la redirección, la cookie se establece correctamente. Supongo que este es un problema de encabezado de algún tipo. ¿Cuál es la mejor solución para esta situación?
if($form_submitted) {
...
setcookie(''type_id'', $new_type_id, time() + 60*60*24*30);
header("Location: $url");
exit;
}
Tenga en cuenta que setcookie devuelve true
en cualquier caso y no recibo errores / advertencias / avisos.
EDITAR: Estoy usando Unix / Apache / MySQL / PHP
¿Cómo está probando si la cookie está configurada? Las cookies están disponibles en la página siguiente una vez configuradas.
Errores comunes:
Las cookies no serán visibles hasta la próxima carga de una página para la cual la cookie debería ser visible. Para comprobar si una cookie se configuró correctamente, compruebe la cookie en la página de carga siguiente antes de que caduque la cookie. El tiempo de caducidad se establece mediante el parámetro expirar. Una buena manera de solucionar la existencia de cookies es simplemente llamando a print_r ($ _ COOKIE) ;.
Pude resolver este problema usando un ligero retraso en el encabezado de actualización. Configuramos el encabezado (que debe hacerse antes de cualquier método que pueda generar resultados, como setcookie), y luego configuramos las cookies. Agregué un mensaje para que el usuario no vea una pantalla en blanco durante esos dos segundos.
header("refresh: 2; url=$url");
setcookie(''type_id'', $new_type_id, time() + 60*60*24*30, ''/'');
echo "Processing, please wait...";
Si tiene urls o subcarpetas humanas (como www.domain.com/path1/path2/), debe establecer la ruta de la cookie en / para trabajar en todas las rutas, no solo en la actual.
if($form_submitted) {
...
setcookie(''type_id'', $new_type_id, time() + 60*60*24*30, ''/'');
header("Location: $url");
exit;
}
Desde el manual de PHP:
La ruta en el servidor en el que estará disponible 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 en el que se está configurando la cookie.
Use una URL relativa en el encabezado:
@Header("Location: orders_9090_1.php");