PHP include() 或 require() [关闭]

Posted

技术标签:

【中文标题】PHP include() 或 require() [关闭]【英文标题】:PHP include() or require() [closed] 【发布时间】:2016-07-03 23:04:04 【问题描述】:

我了解 include()、require()、include_once()、require_once() 的功能和区别。

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

它们还有哪些其他常见用途,例如,在访问数据库时等?它们可以用来提高安全性等吗?

【问题讨论】:

这个问题的答案可以在google的一般搜索中找到。 w3schools.com/php/php_includes.aspphp.net/manual/en/function.require.php 和更多来源。 【参考方案1】:

主要是为了代码的复用性-this page sums it up rather well:

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

它在许多基于 PHP 的平台(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 网络用户无权查看 webroot 之外的任何内容,因此他们永远无法访问 public_index.php(除非他们获得了能够访问的用户的凭据 - 例如 root) .

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

Source

简要说明使用 require 和 require_once 的区别

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

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

Source

我希望这会有所帮助。

【讨论】:

这并不能完全回答 OP 的问题 - 例如,我将解释 requirerequire_once 之间的区别......另外,请解决 OPs 最后一段中的问题。 没问题的哥们,刚刚更新了 干得好 :) 很好的解释。

以上是关于PHP include() 或 require() [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

PHP require() 或 include() 并调用类变量?

PHP include 和 require 语句

PHP中include和require语句的区别

php的require和include有啥区别? [复制]

php require() 不适用于相对或完整

2017.7.25