【问题标题】:include file passing a parameter包含传递参数的文件
【发布时间】:2015-12-21 06:14:28
【问题描述】:

我正在使用 ob_* 函数构建一些内容,然后将这些内容传递给 HTML 模板并使用 MPDF 以 pdf 格式打印。

我需要包含一些来自另一个 php 文件的内容。我需要包含的文件将运行查询并根据 id 参数在表中回显一些数据。 通常在我的应用程序中,我使用 ajax 将这个文件加载到正确的位置,但是 ob_* 函数会在 AJAX 完成其工作之前输出数据(请参阅my other question),所以我正在寻找一种解决方法。 我最好的想法是使用 php include 来解决问题。我脑海中的代码应该是这样的:

foreach($listaz as $l){
    include "bp/businessplan.php?id=$l";
}

显然这不起作用(我知道包含如何工作,如 in this SO question 所述),因为我收到此错误:

警告:include(bp/businessplan.php?id=AZ000000213):打开失败 流:中没有这样的文件或目录 /var/www/jdev/creditmanager/sofferenze/soff.php 在第 1000 行

$listaz 将包含要传递给文件的参数列表,数组如下所示:

array(
    [0]=>AZ000000213
)

(在这种情况下只有一项) 所以问题是: 如何在主 php 文件中包含 businessplan.php 文件的内容与在主 php 文件中的特定位置打印它的数组中的值一样多次(将其附加到一个 div 之后另一个)?

【问题讨论】:

  • 如果listaz 包含数字键 - 为什么使用'id_az'
  • 你是对的。我的错误,但错误仍然存​​在。编辑问题:)
  • 您是尝试使用 file_get_contents 和绝对 URL 还是仅使用 cURL 调用脚本而不是尝试包含它?
  • 我考虑过 flie_get_contents 但我想我会遇到与参数相同的问题。绝对网址是什么意思?
  • http://www.example.com/my/script.php?test='.$id'。要使用它,您需要启用 allow_url_include

标签: php


【解决方案1】:
  1. 尝试使用 __DIR__ 常量 (http://php.net/manual/en/language.constants.predefined.php) 为您的文件添加绝对路径,如下所示:

    include __DIR__."/bp/businessplan.php?id=$l";

它必须解决您的路径问题。

  1. 如果您想多次获取内容,可以尝试使用return 而不是 ob_* 函数。请参阅下面的示例:

文件 test.php

<?php
$r = '';
for ($i=0;$i<10;$i++) {
  $_GET['id'] = $i;
  $r .= include 'businessplan.php';
}

echo $r;

文件businessplan.php

<?php
return 'your html here'.$_GET['id'].PHP_EOL;

当我运行 test.php 时,它会显示以下几行:

your html here0
your html here1
your html here2
your html here3
your html here4
your html here5
your html here6
your html here7
your html here8
your html here9

希望对你有帮助

编辑 1

  1. 文件未找到问题 - 尝试按照我上面的建议从文件名中删除 ?id=$l 并将其传递给 $_GET 数组。

【讨论】:

  • 感谢您的提示。 dir 问题是一个错误问题,但我会尝试提示您将变量传递给包含的文件!
  • 我会将您的答案标记为正常,因为真正的解决方案在于您建议的技巧:$_GET['id'] = $i; include 'businessplan.php'; 这实际上是我要问的。第 1 点不是问题(另见第 3 点)。我已经知道它们是由于尝试在 url 中传递查询引起的 :) 关于输出缓冲区......这是在包含文件中而不是在包含的文件中(这就是为什么在这种情况下我不能继续使用 ajax 来加载包含的文件中包含一个)
猜你喜欢
  • 2017-08-01
  • 2011-05-17
  • 1970-01-01
  • 1970-01-01
  • 2012-11-21
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
  • 2021-10-16
相关资源
最近更新 更多