在登录页面上重定向后让 Alert 工作

Getting Alert to work After a redirect on a login page

我有一个标题为 login.php 的页面,如果用户成功登录,他将被重定向到 map.php。 login.php 上还有一个超链接到 map.php

map.php开始如下:

 <?php 
 session_start();
 if ($_SESSION){
 ?>

然后输出一堆HTML和JAVASCRIPT然后...

 <?php } else {
 header ('Location: ../login.php');
 exit();
 $message = "wrong answer";
 echo "<script type='text/javascript'>alert('$message'); 
 </script>";
 }
 ?>

如果我从 login.php 开始,然后在不输入用户名和密码的情况下单击超链接跳转到地图,我会看到浏览器已刷新,并且我已将自己重定向回相同的页面需要,但是如何使警报起作用?我想让用户知道他必须登录才能查看 map.php

i wish to let the user know that he must be logged in in order to see the map.

您主要有两种不同的解决方案来处理重定向。

使用 PHP

处理重定向

您可以输出普通文本,而不是显示警报,并结合使用 refresh header 调用和 url header 调用以发送a header 到客户端浏览器,在一定秒数后刷新页面。

<?php
}
else
{
    $message = "wrong answer";
    header('Refresh: 5; url=login.php'); 
    exit($message);
}

使用 Javascript

处理重定向

只需输出您已经编写的警报脚本,然后通过 javascript 处理重定向,而不是使用 header() PHP 函数。

<?php
}
else
{
    $message = "wrong answer";
    echo "<script>
    alert('$message');
    window.location.href='login.php';
    </script>";
    exit;
}

我个人建议通过 PHP 处理重定向,因为它作为解决方案更优雅,而且您不必担心在浏览器中禁用了 JavaScript 的用户。