携帯サイト : してログ

今では使うことが少なくなった use_trans_sid だけど、まだドコモ向け携帯サイトで使うことがあります。実によく出来た仕組みでは、自動的にセッションIDをフォームに追加してくれるのですが、header 関数でリダイレクト(Location: xxxxx)したときは追加してくれません。そこで作った代替関数を示します。リダイレクト以外はオリジナル関数と同じ動作をします。必要に応じて override_function 関数を使って置き換えても良いと思います。

// use_trans_sid 対応版の header
function header_ex($str) {
	if (ini_get('session.use_trans_sid')==1) {
		if (preg_match('/^location:(.+)/i',$str,$matches)) {
			$url = trim($matches[1]);
			if (substr($url,0,4)!='http') {
				if (strpos($url,'?')===false) {
					$url .= '?'.session_name().'='.session_id();
				} else {
					$url .= '&'.session_name().'='.session_id();
				}
				$str = "location: ".$url;
			}
		}
	}
	header($str);
}