如何将 PHP 生成的 XML 文件包含到 flash vars 中,同时将当前的 php 函数传递到其中?

Posted

技术标签:

【中文标题】如何将 PHP 生成的 XML 文件包含到 flash vars 中,同时将当前的 php 函数传递到其中?【英文标题】:How to include a PHP generated XML file into flash vars, while ALSO passing through the current php functions into it? 【发布时间】:2011-05-29 04:21:26 【问题描述】:

您好 鉴于情况:在webpage.php 中,flashscript 正在调用带有 flashvar 的 flash 脚本:播放列表文件,它是一个 PHP 生成的 XML 文件:playlist.php,它做得很好这么久因为那里没有额外的功能。现在,在那个XML-format playlistfile 中,除了通常的echo(""); 之外,还需要一个特殊的函数,即已经在webpage.php 中声明的非常特殊的echo __(""); 函数,它需要对驻留在其中的段落做一些事情xml 文件。

然而,目前检索到的文件缺少函数echo __();并说“没有在那个xml格式的[playlist.php]文件中声明这样的函数”。当前包含在webpage.php 最顶部的 php 函数不知何故不会将必要的函数传递到播放列表文件中,以便它识别如何处理它,以便该播放列表使那些必要的功能正常工作。

显然,当驻留在 flashvars 中时,这些不会自动/正确通过?导致echo __("");webpage.php 内调用或通过普通php include(""); 调用时工作正常,如果这些函数位于不同的php 文件中。但不适用于 playlist.php 文件。

任何想法为什么/这里发生了什么? 我很感激你为这个概率+1提供的线索。非常感谢。


WEBPAGE.PHP网页,顶部有一个包含函数:

<?php include (functions.php); ?> 
//  function that know what to do with echo __("paragraph")

<script language="javascript" type="text/javascript">
    run(
      'play', 'true',
      'loop', 'true',
      'flashvars', 'xmlFile=/incl/playlist.php',    // <<<< !!
      'wmode', 'transparent',
      'allowScriptAccess','sameDomain',
    );
</script>

<noscript>
   <object classid="blabla">
   <param name="allowScriptAccess" value="sameDomain" />
   <param name="movie" value="/movies/movie.swf" />
   <param name="flashvars" value="xmlFile=/incl/playlist.php" />  // <<< !!
   <embed src="/movies/movies.swf" type="application/x-shockwave-flash"/>
   </object>
</noscript>

PLAYLIST.PHP PHP 生成的 XML 文件作为 flash 变量检索到网页中(见上文)

<?php
echo ('<?xml version="1.0" encoding="UTF-8"?>');
echo ('<songs>');
    echo ('<song version="1. "') . __("boom blue blow bell bowl") . ('/>');
    echo ('<song version="2. "') . __("ball bail beam bike base") . ('/>');
echo ('</songs>');
?>

【问题讨论】:

你不明白它是如何工作的。 webpage.php 被执行并将其输出发送到浏览器,其输出中包含文字字符串 'xmlFile=/incl/playlist.php'。然后客户端对该文件发出第二个完全独立的请求,该请求必须包括独立于webpage.php 运行所需的所有服务器端文件。这与webpage.php 完全不同,包括playlist.php 服务器端通过includerequire 【参考方案1】:

据我了解,您将 playlist.php 的路径传递给 Flash Player,然后 Flash Player 连接到服务器以调用实际的 php 页面。如果是这样,您必须将 __() 函数也包含到 playlist.php 中,否则无法调用。

【讨论】:

谢谢 WeltRaumPirat,是的。但是该函数已经被调用(消耗 kbytes , cpu 等)为什么要再次调用它?你让我想到了一个主意。是否有可能例如将其包含为$string = include("playlist.php");,然后以某种方式将此$string 输出放入该flashvar?如果是,该怎么做? (现在将尝试,令人兴奋的gggg) 你需要了解你有两个php页面:一个嵌入flash插件,一个从flash电影中调用,然后生成播放列表。您通过 flashvars 传递的不是实际的播放列表,而是 Flash 播放器可以找到第二页的路径。实际上,该函数甚至不会在webpage.php 中调用,除非您还有一些未在此处显示的代码。您可以从那里删除包含 - 它没有任何作用。 是的,到目前为止还没有结果......也许唯一的方法是再次将函数包含到该 php 生成的 xml 文件中,看看会发生什么。 (到目前为止它抱怨错误的路径,但会尝试看看如果那是固定的) 不要那样做。您的 Flash 应用程序将无法正确加载 XML。如果它抱怨路径错误,您可能应该调查一下。 当我在 playlist.php 的顶部包含函数时,一切正常,但是,两次加载相同的 indlude 文件不是浪费带宽吗??????不是我所说的优雅解决方案......【参考方案2】:

我不确定是否可以为 swf 提供服务器脚本的相对 url

【讨论】:

当然是。只有它会相对于 swf 文件的路径。 @weltraumpirat :我一直提供绝对链接,而且一切正常 好吧,绝对路径和相对路径都可以在您的 html 中的其他任何地方使用。为什么这里应该不一样? @weltraumpirat :当我遇到这种情况时,原因总是相当愚蠢 - 我通常从检查和更改嵌入代码开始,它通常会有所帮助 感觉它与相对路径或绝对路径无关:如果设置正确,两者都可以正常工作。

以上是关于如何将 PHP 生成的 XML 文件包含到 flash vars 中,同时将当前的 php 函数传递到其中?的主要内容,如果未能解决你的问题,请参考以下文章