PHP重定向未登录的用户

PHP重定向未登录的用户,php,Php,我正在寻找一种方法来重定向未从特定目录中的任何文件登录的所有用户 我有一个名为admin的目录 唯一拥有登录名的用户将是我自己 我使用这样的脚本检查我是否已登录,如果未登录,则重定向 if(isset($_SESSION['user']) { if($_SESSION['user'] == "username") { echo "Welcome, " . $_SESSION['user']; } else { header("Location: index.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");
}
}
}

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

如果我正确理解了您的问题,您希望没有
$\u会话['user']
的任何人访问
/admin/
目录中的文件时被重定向吗

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

请注意完整的URL,包括标头中的http。HTTP头必须有完整的绝对URL才能正常工作。

但这不是在寻找像admin.php这样名为admin的脚本吗?iirc,它应该包含根目录的路径,您可以通过回显它的值来尝试。或者执行
print\r($\u服务器)好的,现在我已经读过了,我想我理解了一点。我一直在尝试使用数组,因为将来我可能会在
admin
目录中有一两个文件供公众访问,所以我不想重定向每个文件。这会是一件奇怪的事情,允许公众访问管理文件夹?在什么情况下这是一件好事?取决于我放置的文件。这是以防万一的事。