如何将 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
服务器端通过include
或require
。
【参考方案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 函数传递到其中?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 adobe animate CC fla 导出到 illustrator CC