1

在主index.php文件中,header.php包含。这两个文件都必须插入session.php, database.php等才能运行。但是当包含 header.php 时,有两个相同的require/include 文件,所以有两个相同的函数,查询。这会导致文件中出现一些问题。
这个问题的解决方案是什么?

4

2 回答 2

13

使用include_once而不是include.

include_once 语句在脚本执行期间包含并评估指定的文件。这是一种类似于 include 语句的行为,唯一的区别是如果文件中的代码已经被包含,它将不会再次被包含。顾名思义,它将仅包含一次。

http://php.net/manual/en/function.include-once.php

于 2012-06-03T18:59:36.607 回答
0

这是一个很老的问题,但我要回答这个问题,因为如果您正在寻找这个问题的答案,搜索引擎会指向这里。

您不能信任用户,他们使用include_oncerequire_once功能始终加载您的脚本。为了避免多次加载相同的脚本,您可以定义特定的常量并验证它是否已经定义。

您的脚本文件(test.php):

<?php
if(defined('MY_UNIQUE_SCRIPT')){
    return true;
}

const MY_UNIQUE_SCRIPT = true;

echo __FILE__.PHP_EOL;

如果你调试它:

<?php
//Lets debug it
include 'test.php';
include 'test.php';
require 'test.php';
require 'test.php';
include 'test.php';

您的脚本仅加载一次,所有其他包含尝试都将被忽略。

基于一个示例,您可以实现更完美地满足您需求的类似解决方案。

于 2021-12-06T12:17:49.503 回答