【问题标题】:Using PHP to redirect a user [duplicate]使用 PHP 重定向用户 [重复]
【发布时间】:2013-06-25 01:07:39
【问题描述】:

我正在构建一个 Web 应用程序,并且我使用大量包含文件来构建我的大部分页面。

例如:

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

现在,如果用户尝试直接访问我的一个包含文件,我想将他们发送到我的 404 页面。我该怎么做?

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

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

【问题讨论】:

标签: php


【解决方案1】:

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

在顶部的前端控制器中:

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 包含文件,但会阻止任何人从网络访问它们。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      又快又脏:

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

      if (!defined("SOME_CONSTANT")) {
         //Redirect or send a 404 header
      }
      

      更慢但更好

      从网络根目录(通常是wwwhtdocs 文件夹)中获取在网络上下文中作为独立文件没有意义的文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-13
        • 1970-01-01
        • 2015-04-19
        • 1970-01-01
        • 2011-05-15
        • 2013-01-12
        • 1970-01-01
        • 2013-03-18
        相关资源
        最近更新 更多