【问题标题】:PHP passing values to variables in included filesPHP将值传递给包含文件中的变量
【发布时间】:2012-05-28 16:44:22
【问题描述】:

我有一个 php 文件 (article.php),其中包含保存内容的变量和一个包含对保存 html 结构的模板的引用 (template.php)。

<?php
$headline = 'Headline';
$author = 'Author';
$paragraph = 'Text';
include 'template.php';
?>

这是上面提到的template.php。它包括 blockTemplate.php。 (更多内容,见下文。):

<html>
   <body>
      <?php include 'blockTemplate.php'; ?>
   </body>
</html>

这是 blockTemplate.php。它有变量,我想在 article1.php 中提供的值,(顶级文件):

<h1>Title: <?php $headline ?></h1>
<h2>Author: <?php $author ?></h2>
<p>Text: <?php $paragraph ?></p>

这是我应该从 article1.php 得到的输出:

标题:标题

作者:作者

文字:文字

这是我得到的输出。请注意没有包含变量:

标题:

作者

文字:

问题:如何将 article1.php 中的值传递给包含的 blockTemplate.php 中的变量? 被包含的文件在包含之前正在处理中发生了什么,因此到它们时不包含任何变量包括吗?

【问题讨论】:

  • 您发布的代码运行良好。
  • 代码看起来不错,打开你的错误报告,看看其他地方是否出了问题。
  • 包含的文件被放置在包含指令所在位置的变量范围内 - 就好像包含文件的内容已被直接复制/粘贴到该位置。
  • 您是否尝试包含后来包含 blockTemplate.php 的 template.php?
  • 这是渲染html文件的正确方式。一个小建议;只使用关联数组;通过 print_r 让您的用户/设计师知道他们拥有什么

标签: php variables include scope


【解决方案1】:

你试过了吗:

<h1>Title: <?php echo $headline ?></h1>
<h2>Author: <?php echo $author ?></h2>
<p>Text: <?php echo $paragraph ?></p>

这对我有用

【讨论】:

  • 是的,一定是这样。每个人都错过了丢失的回声:)
  • 我才意识到这一点。谢谢!
  • 顺便说一下,这段代码容易受到XSS注入。要修复它(转义输出变量),您必须将每个变量包装在 htmlspecialchars() 调用中。
  • 如果您觉得工作量很大,请尝试一些模板系统,例如 Nette\LatteTwig
  • 感谢 Ondřej!我会调查的
【解决方案2】:

我遇到了类似的问题。在我的 include.php 中,我有这样一行,

echo '<form id="frm"><input type="hidden" id="Variable" valve=$>Variable</form>'

应该评估哪些 PHP 但没有评估。因此,在阅读了 Xare 的上述帖子后,我尝试了,

echo '<form id="frm"><input type="hidden" id="Variable" valve=$Variable></form>';

从单引号中删除我的 $Variable 修复了它。

【讨论】:

    猜你喜欢
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 2016-06-08
    • 1970-01-01
    • 2015-06-15
    • 2011-04-03
    • 1970-01-01
    相关资源
    最近更新 更多