我理解include(),require(),include_once(),require_once()的功能和差异。
请有人告诉我一些真实世界在项目中的实际用法。我知道常用功能可以存储在单独的文件中,并且可以导入以提高可管理性。
它们的其他常见用法是什么,例如,数据库访问时等?它们可以用来提高安全性等吗?
答案 0 :(得分:2)
它主要用于代码重用 - 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 web用户没有预先查看webroot之外的任何内容,因此他们永远无法访问 public_index.php (除非他们获得了能够访问的用户的凭据 - 例如root) 。
这种措施的真实世界应用是Wordpress&#39; wp-config.php 文件,可以放在服务器webroot之外。
简要介绍使用require&amp;和require_once 强>
require()
包含并评估特定文件,而require_once()仅在之前(在同一页面上)未包含它时才这样做。
因此,当你想要包含一个你有很多功能的文件时,建议使用require_once()
。通过这种方式,您可以确保不会多次包含该文件,并且您将无法重新声明&#34;函数&#34;错误。
我希望这会有所帮助。