プロが教えるわが家の防犯対策術!

はじめて投稿いたしました。

この度、携帯で会員制のコンテンツをリリースする予定でおりまして、
会員認証の場面等でサブスクライバIDをキーとしてユーザー判別を行お
うとしております。

そこで、色々なサイトを参考とさせて頂きながら、下記の様なソースで
サブスクライバIDを取得を試みました。

その結果、ドコモとAUは問題ありませんでしたが、SB携帯だけサブスクラ
イバIDの取得ができませんでした。

SB公式サイトや各種情報サイトを参考に、色々ソースをいじってみたので
すが、どーにも取得できません。

恐れ入りますが、どなたかお分かりになる方、不具合点のご指摘をお願い
申し上げます。

---以下、ソース------------------------


$UA = $_SERVER['HTTP_USER_AGENT'];
$HostName = @gethostbyaddr($_SERVER['REMOTE_ADDR']);
// DoCoMo
if ( preg_match("/.docomo.ne.jp/", $HostName) )
{
preg_match("/ser([a-zA-Z0-9]+)/",$UA, $dprg);
if ( strlen($dprg[1]) === 11 )
{
$MobileInfo = $dprg[1];
}
elseif ( strlen($dprg[1]) === 15 )
{
$MobileInfo = $dprg[1];
preg_match("/icc([a-zA-Z0-9]+)/",$UA, $dpeg);
if ( strlen($dpeg[1]) === 20 )
{
$MobileInfo = $dpeg[1];
}
else
{
$MobileInfo = false;
}
}
else
{
$MobileInfo = false;
}

}
//SBの処理はここから
elseif(preg_match("Vodafone",$UA) || preg_match("SoftBank",$UA ) )
{
// SoftBank
if ( preg_match("//SN([a-zA-Z0-9]+)//",$UA,$vprg) )
{
$MobileInfo = $vprg[1];
}
else
{
$MobileInfo = false;
}
}
//SBの処理はここまで
elseif ( preg_match("/.ezweb.ne.jp/", $HostName) )
{
// au
$MobileInfo = $_SERVER['HTTP_X_UP_SUBNO'];
}

A 回答 (2件)

No.1の方の回答に加えて


elseif( preg_match("Vodafone",$UA) || preg_match("SoftBank",$UA ) )



elseif( preg_match("/Vodafone/",$UA) || preg_match("/SoftBank/",$UA ) )

こいつもデリミタが必要じゃないですかね。
ざっと見では他に異常はなさそうです。
// VodafoneはJ-Phone系のものとモトローラ製端末でも振り分けが必要だった気もしますが
    • good
    • 0
この回答へのお礼

早速のご返答ありがとうございました。
ただ、せっかく教えて頂いたのですが、やはり上手く取得できませんでした。プログラムソースの先頭に記載してあるので、他の関数等の影響は受けていないはずなのに・・・
端末の設定も見直しましたが問題なく、知人の協力で複数のSB携帯を使って試して見ましたが・・・どーにも。
ちょっと携帯関連の技術サイトを再度まわりながら検討したいと思います。

お礼日時:2007/12/04 16:44

ざっとしか見ていませんが


> if ( preg_match("//SN([a-zA-Z0-9]+)//",$UA,$vprg) )

if ( preg_match("/\/SN([a-zA-Z0-9]+)\//",$UA,$vprg) )
としないと駄目じゃないですか?デリミタが/なので、エスケープする必要があります。
    • good
    • 0
この回答へのお礼

早速のご返答ありがとうございました。
早速試してみましたが、やはりうまく取得できませんでした。DocomやAUでは問題なく取れてるのに・・・
手元にSB携帯がないので、確認に時間がかかりますが、教えていただきました内容を元に、ちょっと色々考えたいと思います。

お礼日時:2007/12/04 16:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!