php

PCと携帯のブラウザ判別

		$flag = browser_check();
		if($flag == 1) {
			ini_set('session.use_cookies', 1);
			header("Location: index.php");
		} else if($flag == 0) {
			ini_set('session.use_cookies', 0);
			header("Location: index.php?" . SID);
		} else {
			$mess = mb_convert_encoding("ブラウザ判別エラー", "SJIS", "EUC");
			$smarty->assign('mess',$mess);
			$smarty->display('index.tpl');
		}

簡単に言うとこんな感じ。
blowser_check();では、携帯の各キャリアを判別して、PC以外、というフラグを返しています。

function browser_check(){
  $browser = $_SERVER["HTTP_USER_AGENT"];
  $remote_host = $HTTP_SERVER_VARS["REMOTE_HOST"];
  $flag = 1;/*1の場合、PC。0の場合、携帯。*/
  if( eregi( "DoCoMo", $browser) ){/*DoCoMo*/
    $flag = 0;
  }
  else if( eregi( "J-PHONE|Vodafone|SoftBank", $browser) ){/*J-PHONE*/
    $flag = 0;
  }
  else if( eregi( "ezweb.ne.jp|ido.ne.jp", $remote_host) ){/*au,TU-KA*/
    $flag = 0;
  } else if(eregi("UP.Browser",$browser)) {/*au,TU-KA*/
    $flag = 0;
  } else if( eregi( "DDIPOCKET|WILLCOM", $browser) ){/*WILLCOM*/
    $flag = 0;
  }

  if( $flag == 1){
    return($flag);/*携帯電話以外のアクセス*/
  }
  else if ( $flag == 0 ){
    return($flag);/*携帯電話のアクセス*/
  }
}


ここで、重要なのはこれ。

ini_set('session.use_cookies', 1);

ini_setで、php.iniの設定を書き換えることができます。
携帯と同じようにPCを使うとセッションURLが丸見えになってしまうので、
PCの場合はsession.use_cookiesをOFFにします。