2008/08/20
携帯Flash (FLASH Lite 1.1) へ普通にパラメータを渡す
ための wrapper( php5 ) です。※php4は これをソース上部にコピペすれば動きます。
http://faces.jp/files/ao/0814/wrap.php?a=welcome&b=to&c=faces
上記リンク先でURLのパラメータを変更してみてください。
ソースは 'test.swf' の部分を好きな swf に書き換えて下さい。→ zip ファイル
というか、「iモード用のFLASHにパラメータを送りたい」 に antwerpen さんが書いてくれてるものを function にくるませてもらっただけです。ありがとうございました。
<?
header("Content-Type: application/x-shockwave-flash");
//echo swf_wrapper('test.swf',array('arg'=>"dsadasdasdasdadadsa"));
echo swf_wrapper('test.swf',$_GET);
function swf_wrapper($file,$item){
$tags = build_tags($item);
$src = file_get_contents($file);
$i = (ord($src[8])>>1)+5;
$length = ceil((((8-($i&7))&7)+$i)/8)+17;
$head = substr($src,0,$length);
return(
substr($head,0,4).
pack("V",strlen($src)+strlen($tags)).
substr($head,8).
$tags.
substr($src,$length)
);
}
function build_tags($item){
$tags = array();
foreach($item as $k => $v){
//$v = mb_convert_encoding($v,'SJIS','UTF-8');
array_push( $tags, sprintf(
"\x96%s\x00%s\x00\x96%s\x00%s\x00\x1d",
pack("v",strlen($k)+2), $k,
pack("v",strlen($v)+2), $v
));
}
$s = implode('',$tags);
return(sprintf(
"\x3f\x03%s%s\x00",
pack("V",strlen($s)+1),
$s
));
}
?>
【サンプル】パラメータといっしょに携帯ID&USER_AGENTを渡すバージョン
http://faces.jp/files/ao/0814_b/wrap2.php?a=welcome&b=to&c=faces
<?
$swf = 'test.swf';
switch(true){
//case(isset($_GET['phpinfo'])):phpinfo();break;
case(eregi('^docomo', $_SERVER["HTTP_USER_AGENT"])>0):
if(empty($_GET['guid'])){
header(sprintf(
'Location: %s?%s',
$_SERVER['SCRIPT_NAME'],
http_build_query(array_merge(
$_GET,
array( 'guid' => 'ON' )
))
));
exit;
}else{
print_swf($swf,1);
}
break;
case(eregi('^kddi', $_SERVER["HTTP_USER_AGENT"])>0):print_swf($swf,2);break;
case(eregi('^softbank', $_SERVER["HTTP_USER_AGENT"])>0):print_swf($swf,3);break;
default:
header("Content-Type: application/x-shockwave-flash");
echo swf_wrapper( $swf, $_GET );
}
function print_swf( $swf, $carrier_id ){
$key = array(
1 => 'HTTP_X_DCMGUID',
2 => 'HTTP_X_UP_SUBNO',
3 => 'HTTP_X_JPHONE_UID'
);
header("Content-Type: application/x-shockwave-flash");
echo swf_wrapper( $swf, array_merge(
$_GET,
array(
'phone_id' => $_SERVER[$key[$carrier_id]],
'HTTP_USER_AGENT' => $_SERVER['HTTP_USER_AGENT']
)
));
}
function swf_wrapper($file,$item){
$tags = build_tags($item);
$src = file_get_contents($file);
$i = (ord($src[8])>>1)+5;
$length = ceil((((8-($i&7))&7)+$i)/8)+17;
$head = substr($src,0,$length);
return(
substr($head,0,4).
pack("V",strlen($src)+strlen($tags)).
substr($head,8).
$tags.
substr($src,$length)
);
}
function build_tags($item){
$tags = array();
foreach($item as $k => $v){
//$v = mb_convert_encoding($v,'SJIS','UTF-8');
array_push( $tags, sprintf(
"\x96%s\x00%s\x00\x96%s\x00%s\x00\x1d",
pack("v",strlen($k)+2), $k,
pack("v",strlen($v)+2), $v
));
}
$s = implode('',$tags);
return(sprintf(
"\x3f\x03%s%s\x00",
pack("V",strlen($s)+1),
$s
));
}
?>
コメント一覧