我建议在htdocs之外有一个文件夹(名为 outsidefolder ),并且在public_html
之外,在文件夹中有index
。php,其中包含指向其他页面的链接,外部文件夹中使用的类文件。在htdocs和稍后的public_html
文件夹中,我有一个文件夹(名为folderinside),用于访问public_html之外的outsidefolder。
在folderinside中,我有一个带有样式文件的样式文件夹,js代表 javascript,图像的图像,用于外部文件夹中的所有页面。
示例:
href="http://localhost/folderinside/style/style.css";
在文件夹中,我可以从网站访问login.php
,action_form.php
,pages.php
和pagesone.php
。
login.php
:
action ="http://localhost/folderinside/action_form.php
并且表格有 当发送到action_form.php时,它有以下php代码。
if (!empty($_POST['i-action']))
{
$action = str_replace('.', '', $_POST['i-action']);
$action = str_replace('/', '', $action);
if (file_exists("../../outsidefolder/includes/$action".'.php'))
require_once("../../outsidefolder/includes/$action".'.php');
}
Login-action.php调用process.php,在outsidefolder和process.php中都是 外部文件夹中的一个类文件,其中处理表单并成功
include"../../outsidefolder/index.php";
index.php中的链接。
href="http://localhost/folderinside/pages.php?page=pageaaa"
等页面= pagebbb等 在pages.php中是以下php代码,例如。
$allowed = array('pageaaa', 'pagebbb', 'pageccc', 'pageddd');
// the pages
if ( isset($_GET['page']) ){
$page = $_GET['page'];
if ( in_array($page, $allowed) ){
include("../../outsidefolder/$page.php");
}
}
外部文件夹中index.php
中的所有页面都包含链接,并使用folderinside中的pagesone.php对这些链接执行相同操作。
我的问题是;这是安全和实用的
答案 0 :(得分:0)
没有。这不实用,因为为什么你需要一个项目来拥有自己的一些核心功能?
同样为什么你需要重复? - "外部文件夹中index.php中的所有页面都包含链接,并使用folderinside中的pagesone.php对这些链接执行相同操作。"
它不再是安全性较低的,因为它只是对文件的调用或引用 - 但它完全不切实际,尤其是当网站上线时。请记住,除非另有说明" index"将是您网站上线时打开的第一页。 所以,如果你在外面"文件夹放置在实时托管网站上的public_html内,然后包含真实网站的后续文件夹在该内部或外部,该网站仍将自动加载"索引"而不是" pageone"等
让您自己省去以后排序文件的麻烦,而不是现在智能地构建它们。
答案 1 :(得分:0)
我不了解您的具体方案,但通常情况下,有一个"后端"公共文档根目录外的文件夹,仅公开直接处理公共文档根目录中的Internet请求的文件。在任何体面的系统中,您都有数据库类,模板文件,后台工作者/ cron作业等。这些并不意味着直接访问,因此在任何情况下都不得公开曝光。
通常你可能会这样:
public/
js/
css/
imgs/
.htaccess
index.php
app/
foo/
bar.php
baz/
...
public
文件夹仅包含必须可公开访问的文件,例如Javascript,CSS和图像资源。除此之外,它只包含一个小的bootstrap index.php文件,该文件处理所有请求并根据需要加载类/路由器/控制器,这将进一步处理请求。使用配置合理的Web服务器,您甚至不需要该索引文件,但让Web服务器根据需要调用适当的后端脚本。
公开曝光的表面越小,您邀请的问题就越少。
在使用的URL中不应该有任何痕迹。网址可能为/users/profile
,由index.php
处理,并在必要时在内部解析。