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にします。