我正在创建一个有两个用户界面的网站。卖家和买家。目前,我将这些文件存储在一个文件夹下(例如:/interfaces/frame.php)。因此,对于这两种情况,文件都存储在那里。
我可以通过检查数据库中的用户类型来确认用户,并确定他们是买家,他们只能看到买家界面,卖家是卖家界面。问题是这些文件可以公开访问,所以如果你去domain.com/interfaces/frame.php它会显示给你。
我可以进行哪些更改,以便它们无法公开访问,但我可以将其提供给用户。
我正在使用include(“file.php”);用于加载相应的用户界面。
答案 0 :(得分:5)
您可以将这些文件存储在Web根目录下,以便您的目录如下所示:
includes
-permission-needed-files
public_html
-CSS
-Javascript
-Images
-Anything that can be accessed publicly
您仍然可以包含includes文件夹中的文件,因为它们位于Web根目录下,所以无法公开访问它们。
另一种方法是在所有必需文件的顶部包含一个php文件,该文件检查会话变量以查看是否允许它们访问该文件。如果他们没有使用标题来重定向他们
答案 1 :(得分:3)
基本上,PHP与大多数Web服务器没有绑定到Webroot。
因此,如果您有一个好的托管服务,您应该能够将PHP文件存储在一个根本无法从Web访问的文件夹中。然后,您应该存储一个只显示Web文件夹中的内容的php文件,另一个存储调用数据库或包含服务器的非Web文件夹中的数据的文件。
Web可以通过文件系统路径(而不是Web URL)调用none web one。
(这将是他的awnser中提到的MVC模式Jonathan非常非常轻量级的实现。)
当你准备好使用框架时,我会推荐使用Zend Framework。
答案 2 :(得分:2)
在最基本的情况下,您可以在文件的每个文件中添加一个检查,以确保通过include调用它,
main.php
$ isIncluded = 1; ...你的页面逻辑的其余部分...... 包括( “./ includefile.php”);
然后在includefile.php中
if(!$ isInclude){die(“抱歉,此页面无法访问) 直接。“);}
答案 3 :(得分:1)
您可以考虑查看模型视图控制器开发模式,并在请求页面本身时在控制器中执行访问逻辑。我建议将CodeIgniter和Kohana作为两个很好的框架来开发。它们都很简单,可以帮助您在几分钟内解决这个问题。
当然,您还需要为数据库制定一些条款以容纳组和角色。这样您就可以将用户添加到组中,然后授予某些组访问某些页面的权限。