home > 投稿 > 携帯Flash (FLASH Lite 1.1) へ普通にパラメータを渡す
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
	));
}


?>

トラックバックURL

http://faces2.bascule.co.jp/mt/mt-tb.cgi/576

コメント一覧

素敵な情報&コードありがとうございます!
すばらしい 使わせて頂きますね
インライン再生flashにもパラメータを渡すことはできるんでしょうか?

コメントを投稿

(コメントには承認が必要になることがあります。承認されるまではコメントは表示されません。)