首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为了安全起见,大多数PHP文件都不在文档根目录之外,但有些文件现在无法访问

问为了安全起见,大多数PHP文件都不在文档根目录之外,但有些文件现在无法访问
EN

Webmasters Stack Exchange用户
提问于 2019-01-31 06:59:42
回答 1查看 1.4K关注 0票数 0

我正在开发一个内部网站,它没有域名(DNS没有配置为域名),所以它只是通过内部IP地址访问。

我读到过,最好将后端文件(如与数据库连接的php文件)保留在文档根之外,并将其放在上面的一个级别。我现在的结构是这样的:

代码语言:javascript
复制
/Website Main Directory
    /Backend (contains header.php, footer.php, login.php, logout.php)
    /Public (index.php, *.css, *.js, *.images)

Apache虚拟主机目录指向这个 Public文件夹。

我的index.php包括工作良好的header.php和footer.php,公用文件夹中的所有文件都可以正常工作。

在我的标题中,我有一个名为login.php的登录表单,但问题是login.php位于后端。Html无法执行php所做的读取后端文件的操作,所以它只会给我抛出404。如何使html访问位于文档根文件夹之外的后端文件夹中的login.php。

更新:

我试图包含整个后端文件夹路径,但它仍然说在我提交表单时找不到login.php:

代码语言:javascript
复制
                            Logout
                        
                    
            

            

            
                
                    
                        
                    

                    
                        
                    

                    
                        Login
EN

回答 1

Webmasters Stack Exchange用户

发布于 2019-02-02 11:37:48

不要将表单提交给公共目录中不存在的login.php文件。

将数据发布到index.php?action=login,并在index.php中尝试包含此操作的login.php。这可以用

代码语言:javascript
复制
switch ($_GET["action"]) {
    case "login":
        include "../login.php";
        break;
    case "anotheraction":
        include "../otherfile.php";
        break;
}

使用这样的方法,您可以定义多个操作并包含不同的文件。

如果你喜欢以更专业的方式来做,那么:

  • 使用mod_rewrite将所有请求重定向到index.php
  • 在PHP中使用所谓的路由
  • 开始使用一些框架或微框架。大部分肮脏的工作是由其他人完成的,所以您可以专注于实际的编码工作。大多数框架还促进了文档中的良好实践,这样您就可以创建更好的代码。
票数 2
EN
页面原文内容由Webmasters Stack Exchange提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://webmasters.stackexchange.com/questions/120631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档