1

オブジェクトの埋め込み中にオブジェクトへの入力として処理される PHP スクリプトにクエリ パラメータを挿入するにはどうすればよいですか? 適切なケースは、スクリプトによって生成された音楽プレイリストを供給される Shockwave プレーヤーに関するものです。コード サンプルは次のとおりです。

<object type="application/x-shockwave-flash" data="swf_player.swf?sort=track&skin_url=player/skin.xml&playlist_url=music/Playlist_Generator.php">

ここで、swf_player.swf はクエリ パラメータ 'skin_url' と 'playlist_url' を認識し、Playlist_Generator.php はパラメータ 'sort' を認識します。プレイリスト ジェネレーター スクリプトは、指定されたディレクトリ内の .mp3 トラックを識別し、それらを分解して ID3 情報タグ (アーティスト、タイトル、トラック番号、アルバムなど) を取得します。次に、swf_player がトラックを見つけることができる .mp3 ディレクトリを指すトラック情報が関連付けられた主にトラック リストで構成されるプレイリストを出力します。

Playlist_Generator.php は、次のように、ジェネレーターがブラウザーのアドレス バーで直接呼び出されると、クエリ文字列から並べ替えパラメーターを抽出します。

http://localhost/music/Playlist_Generator.php?sort=track

として

$sort_type = $_REQUEST['sort'];
$sort_type = !empty($sort_type) ? $sort_type : 'title'; 

sort パラメータは、プレイリスト内のトラックの順序に関するユーザーの好みを示します。スクリプトの直接呼び出しは、大量のデバッグ情報を容易にするため、プレイリスト ジェネレーターの開発中に使用されたセットアップでした。ただし、前述のように、ジェネレーターがプレイヤーと「インライン」で使用されると、クエリパラメーターは使用できなくなります。上記の埋め込み例では、プレイリスト ジェネレーターの PHP コードはクエリの展開中に処理されるため、クエリ パラメーター、特に「並べ替え」は使用できません。

「その場で」処理されたときに PHP スクリプトが外部情報を取得する方法を考案した可能性のある皆さんに、心から感謝します。上記の問題は、クエリ パラメータにアクセスできないこととして構成されていますが、スクリプトが外部情報を取得できる別の方法が存在する可能性があります。すべての質問、コメント、特に提案を歓迎します!

事前に、貢献してくれたすべての人に感謝します。

4

2 に答える 2

0

プレイリスト ファイルを作成する XSPF_Playlist_Generator.php のサーバー サイド インクルード (SSI) は、非常にうまく機能します。(サーバーで SSI を有効にする必要がある場合があります。たとえば、http://httpd.apache.org/docs/current/howto/ssi.html、構成と構文のリファレンスについては、「サーバー側が含まれる」という検索フレーズが引き出す他の SSI サイトを参照してください。 .) PHP を使用して、ブラウザのアドレス行から取得したクエリ パラメータ sort の値を、php ファイルの URL に添付されたクエリ文字列に挿入していることに注意してください。

<!--#include virtual='music/XSPF_Playlist_Generator.php?sort=<?php echo $_GET['sort'];?>' -->

生成された XSPF プレイリストに加えて、プレイリスト ジェネレーターはプレイリストをファイルに書き込むこともできます。この機能が有効になり、プレイリスト ファイルが次のように SWF プレーヤーに読み込まれました。

<object type="application/x-shockwave-flash" data="swf_player.swf?skin_url=player/skin.xml&playlist_url=music/XSPF_Playlist.xspf">

...(残念ながら)2段階のプロセスを作成します。ブラウザーのアドレスバーから直接phpファイルにクエリパラメーター「sort」の値を挿入する手段を発見していないため、中間ステップが必要なようです。好奇心旺盛な人のために説明すると、プレーヤーは、パラメーターのプレイリスト url の 2 つのタイプの値を認識します: 「その場で」プレイリストを生成する .php ファイル (インジェクションは 1 ステップのプロセスでした) と (準) 静的ページが更新されるたびに再生成できる .xspf ファイル (面倒な中間の 2 番目のステップ)。

このソリューションは、IE、Opera、Safari、Firefox、および Chrome で正常にテストされています。SSI 言語をサポートする 4 つの主要な Web サーバーは、Apache、nginx、lighttpd、および IIS であることに注意してください。

貢献してくれたすべての人に感謝します。従うことができず、完全なソース コードが必要な場合は、kanone@rogers.com まで電子メールでリクエストを送信してください。

于 2012-12-27T23:57:14.783 に答える
0

あなたの質問に対する答えは次のとおりだと思います。

<?php
    $sort = isset($_GET["sort"]) ? $_GET["sort"] : "title"

?>
<object type="application/x-shockwave-flash" data="swf_player.swf?sort=<?php echo $sort ?>&skin_url=player/skin.xml&playlist_url=music/Playlist_Generator.php">

編集:考え直して、これがあなたが探している答えであるとは思えません。「ジェネレーターはインラインで使用される」ということですか?

于 2012-12-18T21:35:05.083 に答える