使用PHP重定向用户

使用PHP重定向用户,php,Php,我正在构建一个web应用程序,我使用了很多包含文件来构建我的大部分页面 例如: 页面profile.php包括about.php、timeline.php、photos.php 现在,如果用户试图直接访问我的一个include文件,我想将其发送到我的404页面。我该怎么做 转到localhost/timeline.php应该将用户重定向到404 我的想法是在那些include文件中编写一个IF语句,检查文件是否被直接打开,这可能吗?快速且脏: 在profile.php中定义一个常量,并检查它是否

我正在构建一个web应用程序,我使用了很多包含文件来构建我的大部分页面

例如:

页面profile.php包括about.php、timeline.php、photos.php

现在,如果用户试图直接访问我的一个include文件,我想将其发送到我的404页面。我该怎么做

转到localhost/timeline.php应该将用户重定向到404

我的想法是在那些include文件中编写一个IF语句,检查文件是否被直接打开,这可能吗?

快速且脏: 在
profile.php
中定义一个常量,并检查它是否存在于包含的文件中:

if (!defined("SOME_CONSTANT")) {
   //Redirect or send a 404 header
}
慢但好
从web根目录(通常是
www
htdocs
文件夹)中获取在web上下文中没有意义的独立文件。

您可以使用一个简单的if语句

if(!defined("SECURE")) {
    header("HTTP/1.0 404 Not Found", true, 404);
    include("404_Not_Found.html"); //include the 404 page
    exit;
}

确保在包含的页面上定义安全常数。

在前端控制器中定义一个常数,并检查它是否在其他文件中设置

在顶部的前控制器中:

define("IN_APP");
然后在任何处理之前的其他页面中:

if(defined("IN_APP")) { die(header('HTTP/1.0 404 Not Found', true, 404)); }

但是,更好的选择是将其他文件放在子目录中,并使用包含以下代码的.htaccess文件拒绝对其的访问

Order deny,allow
deny from all
这仍然允许php包含这些文件,但会阻止任何人从web访问这些文件。

请参阅已接受的答案