如果没有登录,PHP会重定向用户

时间:2016-03-31 15:08:37

标签: php

我正在寻找一种方法来重定向所有未登​​录的用户从特定目录中的任何文件。

我有一个名为admin的目录。

唯一拥有登录权限的用户将是我自己。

我使用这样的脚本来检查我是否已登录,如果没有,则重定向。

if(isset($_SESSION['user']) {
 if($_SESSION['user'] == "username") {
   echo "Welcome, " . $_SESSION['user'];
}
else {
 header("Location: index.php");
}
}

非常简单。挺直的。不需要额外的安全性,因为我没有处理任何敏感数据,我的管理页面也不会干扰我的网站运行方式。

但是我怎么能创建一个重定向来检查特定的admin目录?

此脚本位于我的functions.php文件中,该文件包含在每个页面上,因此我需要一种方法来排除除该目录之外的所有文件,或者是否可以使用数组并只列出页面除非已登录,否则不应查看。

通过一些调整,我认为这样的事情会起作用。

问题是,如果我有两个index.php文件?一个用于主目录,一个用于我的子目录?

我在脚本中添加了$directory = "admin/";,但是我不知道如何将其用于仅仅重定向,如果这些文件位于该目录中。

注意:我匆忙写下这些例子,因此可能会有其他错误。对不起,如果他们这样做。

if(isset($_SESSION['user']) {
 if($_SESSION['user'] == "username") {
   echo "Welcome, " . $_SESSION['user'];
}
else {
 $directory = "admin/";
 $redirect[] = array();
 $redirect[] = "page1.php";
 $redirect[] = "page2.php";
 if (in_array(($_SERVER["SCRIPT_FILENAME"], $redirect)) {
  header("Location: index.php");
}
}
}

如何将目录添加到代码中?

1 个答案:

答案 0 :(得分:2)

如果我正确理解了您的问题,您是否希望任何没有$_SESSION['user']访问/admin/目录中的文件的人被重定向?

if (!isset($_SESSION['user']) && stristr($_SERVER['SCRIPT_FILENAME'],'admin'){
   header('Location: http://www.goodbye.com');
}

注意完整的网址,包括标头中的http。 HTTP标头必须具有完整的绝对URL才能正常运行。