【问题标题】:How to execute an included script without being called?如何在不被调用的情况下执行包含的脚本?
【发布时间】:2012-02-09 00:36:13
【问题描述】:

我有一个 PHP 脚本,在某个时候我想包含另一个脚本,但我希望脚本像原始文件的一部分一样运行,并且不必由函数或类:

if(strpos('X-Mailer: Microsoft Outlook', $raw_headers)) {
include 'outlookImageParse.php';
outlookImageParse($html_part);

但即使我将它定义为该文件中的函数并从原始文件中调用它,包含的脚本也不起作用。我使用过、require、require_once、include_once,但没有一个能达到我想要的效果。怎样做才能得到我想要达到的目标?

【问题讨论】:

  • i want the script to run as if it is apart of the original file 什么?
  • 简单地包含它应该可以工作。更具体地说明您想做什么以及什么“行不通”
  • 你的if 语句被执行了吗?
  • 如果你看看下面我的一个 cmets,它似乎不是。

标签: php include


【解决方案1】:

当您 include()(或 require 等)时,脚本被视为直接放入文件中,即您的 include 所在的位置 - 请参阅以下示例。

file1.php

<?php
$var1 = 'hello';
$var2 = 123;

include('file2.php');

echo $var4; // echoes "bbq"

$var5 = 123456;
func1($var5); // echoes "Function! 123456"
?>

file2.php

<?php
echo $var1; // echoes "hello"

$var4 = 'bbq';
function func1 ($var)
{
    echo 'Function! ' . $var;
}
?>

【讨论】:

  • 不要忘记 return 包含文件的行为:php.net/manual/en/function.include.php#example-130
  • 别忘了?我不知道:P 不过很有趣。
  • 我就是这样做的,虽然它仍然没有把它当作我们直接放在文件中一样,实际上它根本不执行。
  • 听起来您包含的文件中出现了问题 - 使用 echo 逐步检查它,看看它是否在某个地方出现问题。如果这不是问题,请使用 Google 搜索“apache php include not working”:)
  • 或者,确保您的 if 语句正在执行。
【解决方案2】:

你指的是代码注入吗?您应该查看Best way to avoid code injection in PHP 以获得最佳实践建议。我不知道它是否会有所不同,我也会在包含的文件名周围加上括号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2017-03-02
    • 2023-02-12
    相关资源
    最近更新 更多