2012-07-28 110 views
5

我是PHP新手。PHP:给出警报弹出框然后重定向页面

当有人上传太大的文件大小时,我想向他们展示警告弹出窗口并将其重定向到上一页(反之亦然)。

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;  
} 

上面的代码只是将我重定向到index.php并且不显示任何警告弹出窗口。

回答

9

这样做

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

然后在index.php文件...

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

换句话说,index.php将经常检查,如果它传递的网址的消息。如果有,显示它。然后,你只需要把这个消息中的重定向

如果你真的想用一个模式弹出,生成JS ...

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

请注意,如果你,除非你在邮件中使用引号,否则会破坏逃避它们

+0

这是完美的谢谢你。 我想知道是否需要担心代码注入,因为 用户可以在消息中输入任何他们想要的内容。 – 2012-07-28 19:37:48

+0

是的 - 请参阅[本页](https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet)以获取良好的指导 – Basic 2012-07-28 20:08:43

+0

当您使用您提供的代码时,您能给我一个注射的例子吗? – 2012-07-28 20:28:59

1

问题是header("location:index.php");自动将响应代码设置为302。浏览器会立即重定向,而不会查看页面的内容。

您需要在发送警报后在javascript中重定向本身,或者让您重定向的页面执行警报。

+0

谢谢,我以为ob_start(); ob_end_flush()函数;打算通过阅读其他帖子来解决问题,但我错了。 – 2012-07-28 19:39:56

-1

的代码是这样:

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"); 

浏览器总会被重定向到index.php页,无论该文件上传成功与否。只是如果文件的大小更大,弹出窗口就会出现。

+1

我不认为这会奏效。标题必须在任何主体内容和302重定向之前输出,导致浏览器忽略主体内容。 – 2012-07-29 00:31:59

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