2012-07-28 12 views
5

Soy nuevo en PHP.PHP: dar alerta emergente y luego redirigir la página

Cuando alguien carga un archivo demasiado grande, quiero mostrarles una ventana emergente de advertencia y redirigirlos a una página anterior (o viceversa).

if(file size is too big){  
    ob_start(); 
    header("location:index.php");  
    echo "<script type='text/javascript'>alert('Your File Size is too big!');</script>"; 
    ob_end_flush(); 
    exit;  
} 

Este código de arriba simplemente me redirigirá a index.php y no muestra ninguna ventana emergente de advertencia.

Respuesta

9

hacer algo como

header("Location: index.php?Message=" . urlencode($Message)); 

Luego, el index.php ...

if (isset($_GET['Message'])) { 
    print $_GET['Message']; 
} 

En otras palabras, index.php siempre comprobar si se está pasando un mensaje en la url. Si hay uno, muéstralo. A continuación, sólo tiene que pasar el mensaje en la redirección

si realmente desea utilizar una ventana emergente modal, generar los js ...

if (isset($_GET['Message'])) { 
    print '<script type="text/javascript">alert("' . $_GET['Message'] . '");</script>'; 
} 

Tenga en cuenta que esto va a romper si se utiliza cotizaciones en el mensaje a menos que escapar de ellos

+0

Esto es perfecto gracias. Me preguntaba si tengo que preocuparme por la inyección de código desde El usuario puede escribir lo que quiera en el mensaje. –

+0

Sí - Consulte [esta página] (https://www.owasp.org/index.php/XSS_ (Cross_Site_Scripting) _Prevention_Cheat_Sheet) para obtener una buena guía – Basic

+0

¿Puede darme un ejemplo de inyección cuando use el código que me dio? –

1

El problema es que header("location:index.php"); establece el código de respuesta a 302 automáticamente. El navegador redirige inmediatamente sin mirar el contenido de la página.

Debe hacer el redireccionamiento en javascript después de enviar la alerta, o bien tener la página que está redirigiendo para hacer la alerta.

+0

Gracias, pensé que ob_start(); ob_end_flush(); Solucionaba el problema según la lectura de otra publicación, pero estaba equivocado. –

-1

El código dice así:

if($_FILES['file']['size'] > 200000) //any file size, 200 kb in this case 
{ 
echo "<script type='javascript'>alert('File size larger than 200 KB')</script>"; 
} 
header("Location: index.php"); 

El navegador será redirigido a index.php página de todos modos, no importa el archivo se carga correctamente o no. Es solo que la ventana emergente aparecerá si el archivo es de mayor tamaño.

+1

No creo que esto funcione. El encabezado debe mostrarse antes de que cualquier contenido del cuerpo y una redirección 302 provoque que el navegador ignore el contenido del cuerpo de todos modos. –

1
<script type="text/javascript"> 
alert("YOUR MESSAGE HERE"); 
location="REDIRECTION_PAGE.php"; 
</script> 
Cuestiones relacionadas