保护包含在include中的页面(“”);
目前学习PHP和使用include
包括页面元素,如保护包含在include中的页面(“”);
include('menubar.php');
include('content.php');
include('footer.php');
它们都称为由说private.php
我想知道什么,你认为这是保护的最便捷的途径这些页面在打字的情况下example.com/content.php
我目前使用类似
<?php //
require("common.php");
// Check to see if the user is logged in
if(empty($_SESSION['user']) || $_SERVER['PHP_SELF'] == "content.php")
{
// if either is true redirect to index.php
header("Location: index.php");
die("Redirecting to index.php"); // login page
}
但想知道还有什么我可以/应该做的?
注意:$ _SESSION ['user']在每个会话开始时或登录时进行验证。
这也可以使用.htaccess文件。 @ 1615903的回答很大程度上依赖于此。
理解这将清除完整的概念。
请求(来自用户的Web浏览器)。你的web服务器(在这个例子中是Apache)收到这个。首先,它检查权限。然后它查看剩下的配置,并最终将请求URI映射到文件系统。现在,最后,它可以检查权限以及.htaccess。
如果其中任何权限检查失败(例如,拒绝所有权限),Apache将停止处理该请求,并发回一个错误(或者在HTTP基本身份验证的情况下请求用户名为&的密码)。
一旦所有的权限检查通过,Apache会查看该文件,并注意到它的.php文件。在你的(或你的虚拟主机的)Apache配置中的某处,有一个AddHandler指令告诉Apache将这个请求传递给PHP引擎(可能是mod_php,或者通过fast cgi)。 (对于大多数文件,它将文件的内容发送到浏览器,但脚本文件是特殊的,因为那个AddHandler。)
现在,PHP读取您的脚本文件。然后它也直接读取包含文件。这不会通过Apache返回,因此诸如.htaccess之类的内容不适用。这也意味着你的PHP包含了不需要在你的文档根目录下。它们可以位于PHP进程可以访问的任何地方(基于UNIX权限和PHP配置)。在你的php.ini中设置include_dir可以很容易地把这些放在任何地方。
客户端JavaScript由用户的浏览器运行。它不是服务器端解释的(就像PHP一样)。所以用户必须能够访问它,就像用户必须能够访问你的.html文件一样。
因此,简而言之:
你可以把从所有在你的PHP包含目录拒绝一个.htaccess。 PHP的include指令不通过Apache,所以它不会在意。理想情况下,您甚至不会将您的PHP包含目录放在您的文档根目录下。
你不能这样做JavaScript,因为JavaScript访问通过Apache(就像.html,.png等访问一样)。
在阅读了Dan对我原来的问题的评论之后,现在更有意义了。谢谢你。这非常有帮助。 – denski
在我看来,最方便的方法是将文件放在www-root之外,并将它们包括在内。因此,文件结构是这样的:
/some-folder
common.php
/www-root
-index.php
你将包括index.php中像这样的文件:
include("../common.php");
通过这种方式,他们不是从任何地方直接访问。
谢谢你,这是非常有用的技巧。 – denski
对于离,如果你使用Apache,您可以使用htaccess的否认一切,但在这[文章]你的入口点状(http://stackoverflow.com/questions/1340001/deny-直接访问所有的PHP文件,除了index-php) –
谢谢丹,我想能够设计登录页面,所以我远离htaccess。 – denski