有很多关于目录结构的文档,但大多数都是关于MVC目录结构的。 但是如果我们不想使用任何框架或MVC呢?
我真的很困惑。
第一个选项:
/public_html
/css
/images
/libs
index.php
profile.php
search.php
第二个选项:我仍然可以使用ww.mysite.com/index.php,ww.mysite.com/profile.php ..链接结构
/libs
/public_html
/css
/images
index.php
profile.php
search.php
第三个选项:我的链接如下:ww.mysite.com/index.php?view = search
/view
-profile.php
-search.php
/libs
/public_html
/css
/images
index.php
哪一个是最佳做法?目录结构对安全性有影响吗? 谢谢你的帮助!
答案 0 :(得分:4)
我认为第三种选择是最好的,但我会进一步扩展(见下文)。如果可以直接从互联网访问文件,它可能会在出现问题时提供信息。
在第一个和第二个选项中,如果mime类型设置错误或由于某些其他原因PHP不解析文件,它通常会显示为text/html
或纯文本。在第一个和第二个选项中,这意味着有人可能会获取数据库登录等信息。
我通常将其设置为类似于选项3,但是将所有内容传递给另一个索引文件,并且不要使URI匹配文件view=search
表示从{{1获取文件search.php
文件夹。我不知道这个设置,但这是个人品味。
我的设置看起来像这样
view
/private
/view
-profile.php
-search.php
/libs
-index.php
/public_html
/css
/images
-index.php
如果它以普通文本形式传递,只需将其移交给私人意义,除了您的文件存储在另一个目录中之外,它不会提供任何信息。所有处理均由public_html/index.php
private/index.php
即使出现配置错误,我也从未发现此设置存在严重问题。
答案 1 :(得分:2)
关于文件夹结构,它与MVC或使用框架或其他任何内容无关。用户不能直接访问不在公共目录中的文件(理论上)。 MVC框架选择文件结构,因为这是良好的实践,这就是他们的目的,教育程序员有关良好的实践。
拒绝使用框架是拒绝对好的实践进行自我教育,因为最臭名昭着的通常是由经验程序员设计的。
我没有看到你的代码,但如果你允许基于请求的查询参数直接获取php文件,那么你就遇到了麻烦(从安全角度来看)。这就是框架实现前端控制器模式,控制器和路由器的原因,以便将php文件层次结构与请求URL的方式分离。