如何将 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 函数传递到其中?的主要内容,如果未能解决你的问题,请参考以下文章

SOAP的请求xml不包含PHP 7上的对象数组

如何将 adobe animate CC fla 导出到 illustrator CC

如何更改基于 PHP 数组的 SQL 查询?

用户通过PHP填写表单后如何自动生成页面?

是否可以在没有原始 .fla 的情况下从 documentClass 文件 (.as) 生成 SWF?

如何使用 PHP 将 xml 文件发送到电子邮件?