Php 为什么include_once()比include()更安全?

Php 为什么include_once()比include()更安全?,php,Php,将外部文件包括到我的站点,大多数情况下,我使用Include()。 但是我看到一些网站说include_once更安全,但是他们没有说明为什么它更安全。include_once()我认为这与安全无关,实际上,当我们放置include_once()时,意味着如果多次包含同一个文件,php不会给出任何错误,但如果使用include()它将给出一个错误。据我所知 使用include_once()时,保证文件只包含一次 使用include()时,它可能会被包含多次-具体取决于您的代码 错误的示例(程序

将外部文件包括到我的站点,大多数情况下,我使用Include()。
但是我看到一些网站说include_once更安全,但是他们没有说明为什么它更安全。

include_once()我认为这与安全无关,实际上,当我们放置include_once()时,意味着如果多次包含同一个文件,php不会给出任何错误,但如果使用include()它将给出一个错误。据我所知

使用
include_once()
时,保证文件只包含一次

使用
include()
时,它可能会被包含多次-具体取决于您的代码


错误的示例(程序可能引发异常):

  • 重新定义一个常数
  • 覆盖已经存在的函数
示例:

  • 重复使用模板片段

是的,它是重复的。此外,您还需要考虑自动加载文件。请阅读有关psr-4的文章或使用composer进行自动加载。所以你只会使用一个include,你的软件设计得更好。在我看来,它不像是一个复制品。问题更倾向于安全含义。我从来没有听说过在这些结构之间选择安全性的因素。如果这是真的,让我们拭目以待,看看是否有人能给我们一些启示。但我建议你编辑问题并引用实际陈述,否则它可能会再次关闭。在我看来,这根本不会影响安全。我认为这意味着程序在避免崩溃(抛出异常)方面的执行更加安全。这是完全错误的!
include
include\u once
之间的主要区别(不是唯一的区别)在于
include
将包含所需的文件,即使该文件已经包含,但
include\u once
不会“重新包含”已包含的文件。此外,除非无法找到文件,否则不会引发任何错误(事实上,如果没有引发错误的常见错误,例如重新定义/分配
常量,则two函数将发出警告,
脚本不会停止)。我想你把
include
require
混为一谈了。我真的看不出这些会对安全性产生什么影响。此外,你甚至不能覆盖PHP中的函数(不像JavaScript)。请参阅我在问题中关于“安全性”的评论。没有。好吧,我忽略了那个评论。也许你应该在回答中提供这些信息:)我想不写了,因为这是我的观点,没有技术上的解释。