直接接近时PHP重定向?

直接接近时PHP重定向?,php,Php,我正在处理这个PHP页面,它包含不同的页面,比如header.PHP。 我想要的是,当您转到header.php时,它会将您重定向到主页。我尝试使用标题,但当我包含它时,它会不断重定向我。 我认为使用带有$\u服务器的if语句是可能的,但我不知道如何使用 有人能帮我吗?提前谢谢 if($_SERVER["PHP_SELF"] == "header.php") { header("Location: index.php"); } 虽然这不是最佳实践。首先,您不应该允许用户访问PHP文件。

我正在处理这个PHP页面,它包含不同的页面,比如header.PHP。 我想要的是,当您转到header.php时,它会将您重定向到主页。我尝试使用标题,但当我包含它时,它会不断重定向我。 我认为使用带有$\u服务器的if语句是可能的,但我不知道如何使用

有人能帮我吗?提前谢谢

if($_SERVER["PHP_SELF"] == "header.php") {
    header("Location: index.php");
}

虽然这不是最佳实践。首先,您不应该允许用户访问PHP文件。禁止用户访问此类文件的最简单方法是将文件移到文档根上,这意味着不可能通过HTTP请求header.php文件。

最好的方法是在主登录页上创建一个常量,比如说,
index.php
是主登录页之一

您将在其中创建一个常量,然后签入所有只应包含在主页中的子模板

例如:

<?php
define("IN_VIEW",true);

require_once "header.php";
如果没有定义,那么显然页面是直接加载的,而不是从index.php加载的


然后,对于每一个应该保护的其他“in direct”页面,您只需将三行放在文件的开头,并确保已在主页中定义了常量(
索引
登录
注销
)等等。

另一个解决方案是简单地将所有内容重定向到index.php,以防止直接访问任何其他脚本。例如,在apache上,您可以使用.htaccess执行此操作,如下所示:

RewriteEngine On

# redirect everything to index.php except exceptions
RewriteCond %{REQUEST_URI} !/robots\.txt$
RewriteCond %{REQUEST_URI} !/favicon\.ico$
RewriteCond %{REQUEST_URI} !/static/
RewriteRule ^(.*)$ index.php [L]

您可以指定一些例外情况,例如robots.txt文件和images目录。

顺便说一下,您的应用程序架构不好,我们都从@Shakti;开始)@Shakti为什么,你是什么意思?就像Greg说的移动它或者把它放在一个文件夹中,里面有一个.htaccess禁止访问。它不起作用,当我使用PHP_SELF时,它读取整个路径,但是你给了我一个很好的提示,谢谢!(它读取整个路径的原因是因为我在本地主机服务器上工作..谢谢!)抱歉,但这会将我重定向到包含页眉和页脚的每个子页面上的index.php。
RewriteEngine On

# redirect everything to index.php except exceptions
RewriteCond %{REQUEST_URI} !/robots\.txt$
RewriteCond %{REQUEST_URI} !/favicon\.ico$
RewriteCond %{REQUEST_URI} !/static/
RewriteRule ^(.*)$ index.php [L]