cakephpゴマ知識 auのSSL通信時の文字化けを回避する!

UTF-8のケータイサイトをつくってたら、SSLページでAUだけ文字化けする!

AUはSSLページでSjis以外は使えないらしくその対応を迫られた。
※アホス過ぎ!

SSLページかつAUのときだけSjis-winに変換することで対応ができた。

app_controller.phpを一部抜粋

public function afterFilter() {
	if (isset($_SERVER['HTTPS'])) { //SSLか判定
		if ($this->ezweb()) {    //AUか判定
			$outBuffer = ob_get_clean();
			$outBuffer = mb_convert_encoding($outBuffer, "sjis-win", "UTF-8");
			mb_http_output("sjis-win");
			ob_start("mb_output_handler");
			echo $outBuffer;
		}
	}
}

・出力バッファを取得し、UTF8からSjis-winに変換
・出力エンコードをSjis-winに設定
・バッファを出力して完了

っという具合。(即興コードなんであしからずw)

エンコード内容は各環境に切り替えればどこでも対応できると思います。
PHPでも利用できるんで、ちょっと改造してつかってみてください。

追記

※beforeRenderではなく、afterRenderじゃないとsessionがきれちゃいました><:

修正

すみません、めちゃめちゃインチキ書いてました!
app_controller.php 抜粋

public function afterFilter() {
	parent::afterFilter();
	if (isset($_SERVER['HTTPS'])) { //SSLか確認
		if ($this->auMobile()) { //AUか確認
			$this->output = mb_convert_encoding($this->output, ‘SJIS-win’, ‘UTF-8′);
			header(“Content-Type: text/html;charset=sjis-win”);
		}
	}
}
                     -

cakephpは$this->outputをエンコードして、ヘッダーをエンコードに合わせて設定すればオッケーです。
いやはや、Auのせいで大変ですわ><;

動的なswfを利用する際、auの強力なキャッシュを回避する

いま作成中のサービスでauの爆裂に強力で理不尽なキャッシュ機能の壁にぶち当たった。

flashを動的に作成するサービスで、何度作り直しても1回目に作成したflashが表示されてしまう。
ブラウザ履歴の削除を都度促さなければいけないという意味不明な仕様になってしまうために、
googleで検索。。。

【yuki走り書き】
http://yukilog.yukiweb.jp/2008/04/flash.html

上記のyukiさんのブログを参考に解決。


[phpの場合]

■修正前
<object data=”/<?php echo “hoge.swf”; ?>” type=”application/x-shockwave-flash” width=”100%” height=”100%”>
<param name=”bgcolor” value=”000000″>
<param name=”loop” value=”off”>
<param name=”quality” value=”high”>
<embed src=”/<?php echo “hoge.swf”; ?>” width=”100%” height=”100%” loop=”on” quality=”high” bgcolor=”#000000″></embed>
</object>
■修正後
<?php
//KDDIキャッシュ対応
//乱数生成方法は適当で!w
$hash = substr(AuthComponent::password(date(“his”)), 0, 10);
?>
<object data=”/<?php echo “hoge.swf”; ?>?<?php echo $hash ?>” type=”application/x-shockwave-flash” width=”100%” height=”100%”>
<param name=”bgcolor” value=”000000″>
<param name=”loop” value=”off”>
<param name=”quality” value=”high”>
<embed src=”/<?php echo “hoge.swf”; ?>?<?php echo $hash ?>” width=”100%” height=”100%” loop=”on” quality=”high” bgcolor=”#000000″></embed>
</object>

という具合に赤文字の変更をいれたら解決しました。
表示ページのURLを変えてもダメなんですね。
ファイル名ごとに強力なキャッシュで守られてるっぽいので、今回はファイル名にキャッシュ対策を入れました。

ちなみにこのタグの記載方法で3キャリア対応です♪

配列を逆順に入れ替える

最近、ホットな案件のリリースでてんやわんや、徹夜徹夜の日々だったので更新がまったくされなかったかわいそうなサイトTT

連続で公開していくけど、時系列がばらばらなのはご愛敬ですw

んで、今日はこれで30分はまった。

しかしphpってすごい
rsort($hoge);

で配列が逆順に入れ替わった=3
優秀ダワ~。

そのほかいろいろソートあるので、参考にしたサイトをご紹介。
【php javascript room】
http://phpjavascriptroom.com/?t=php&p=array_sort

こういう人に役に立つサイト作れるひと尊敬します。