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のせいで大変ですわ><;

softbank で mailto を使う場合!

改行とか文字化けとか空白がプラス(+)記号になる現状にぶち当たると思うんだ!
※俺だけかもだけど….。

例:php5.xでUTF-8のサイトでの場合
————————-

<a href=”mailto:hoge@hoge.jp?subject=&lt;?php echo rawurlencode(mb_convert_encoding(“>&amp;body=<!–?php echo rawurlencode(mb_convert_encoding(”俺はマジだ”, “utf8″));?–>” style=”color:#339900;”&gt;思いをメールに乗せる</a>

————————-

こんな感じに書くといけた。
これにたどり着くまで20パターンぐらい書いちまった@@

配列を逆順に入れ替える

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

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

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

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

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

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

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