• 締切済み

SB携帯のサブスクライバID取得について

はじめて投稿いたしました。 この度、携帯で会員制のコンテンツをリリースする予定でおりまして、 会員認証の場面等でサブスクライバ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']; }

  • PHP
  • 回答数2
  • ありがとう数4

みんなの回答

  • wp_
  • ベストアンサー率54% (132/242)
回答No.2

No.1の方の回答に加えて elseif( preg_match("Vodafone",$UA) || preg_match("SoftBank",$UA ) ) ↓ elseif( preg_match("/Vodafone/",$UA) || preg_match("/SoftBank/",$UA ) ) こいつもデリミタが必要じゃないですかね。 ざっと見では他に異常はなさそうです。 // VodafoneはJ-Phone系のものとモトローラ製端末でも振り分けが必要だった気もしますが

siguro1021
質問者

お礼

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

回答No.1

ざっとしか見ていませんが > if ( preg_match("//SN([a-zA-Z0-9]+)//",$UA,$vprg) ) を if ( preg_match("/\/SN([a-zA-Z0-9]+)\//",$UA,$vprg) ) としないと駄目じゃないですか?デリミタが/なので、エスケープする必要があります。

siguro1021
質問者

お礼

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

関連するQ&A

  • 写メールBBSの携帯ページSoftBank振り分けについて

    レッツPHPの写メールBBSを使用しています。 私、個人はauの携帯電話で、友達のドコモも問題なく見れていました。 過去にはボーダフォンの携帯でも問題なく見れていました。 しかし、先月くらいからSoftBankの人から「パソコン用のページが表示される!」と連絡が入りました。 確認すると間違いなくPC用のHTMLを読み込んでいます。 振り分けの記述は下記のデフォルトの通りなんですが。。。 $env = "pc"; $ua = explode("/", $_SERVER['HTTP_USER_AGENT']); if (strstr($ua[0], "DoCoMo")) { $env = "i"; // DoCoMo } elseif (preg_match("#^UP.Browser|KDDI#i", $ua[0])) { $env = "i"; // au } elseif (preg_match("#^J-PHONE|Vodafone|SoftBank|MOT#i", $ua[0])) { $env = "i"; // Vodafone 携帯の設定では無いような気がしますが、どうしたら携帯用のページを表示させてますでしょうか??

    • ベストアンサー
    • PHP
  • preg_match関数で4-16桁の英数字かどうかをチェックしたい

    こんにちは☆ PHPでログインIDの入力フォームを作成していて、ユーザーの入力した文字が半角英数字のみで4桁以上16桁以内であるかどうかをpreg_match関数を用いてパターンチェックしたいのですが、うまくいきません。 (全角かな等が入っていてもtrueが返ってしまう。) どなたかご存知でしたらご指摘下さいm(_ _)m -------------------現在までの状況------------------------------- $login_id = $_POST["POSTされたユーザ入力"]; $login_id = mb_convert_kana($login_id, "a"); if (!preg_match("/[a-zA-Z0-9]{4,16}/", $login_id)) { echo "エラーメッセージ"; } ----------------------------------------------------------------

    • ベストアンサー
    • PHP
  • PHPで似たコードを繰り返す場合の簡潔な書き方??

    ご質問失礼します。 PHPでデータベースのデータを下記のようなコードを使い表示しています。 ※質問内容に該当する一部のみ記載させていただいています ・ ・ ・ ・ ・ if(preg_match("/新規/", $row['status1'])){ $table .= $row['status1']." 新規です"; } else { if(preg_match("/更新/", $row['status1'])){ $table .= $row['status1']." 更新です"; } else { if(preg_match("/削除/", $row['status1'])){ $table .= $row['status1']." 削除です"; } else { $table .= "いません"; } } } if(preg_match("/新規/", $row['status2'])){ $table .= $row['status2']." 新規です"; } else { if(preg_match("/更新/", $row['status2'])){ $table .= $row['status2']." 更新です"; } else { if(preg_match("/削除/", $row['status2'])){ $table .= $row['status2']." 削除です"; } else { $table .= "いません"; } } } if(preg_match("/新規/", $row['status3'])){ $table .= $row['status3']." 新規です"; } else { if(preg_match("/更新/", $row['status3'])){ $table .= $row['status3']." 更新です"; } else { ・ ・ ・ ・ ・ ・ status1から、5つあればstatus5まで、似たようなPHPを繰り返し書いて動作させています。 このような場合、簡潔に書く方法などありますでしょうか。 ご存知の方いらっしゃいましたらお時間のある際にお教え下さいませんでしょうか。 また、簡潔に書く方法がない場合でも無いとお教えいただければ幸いです(○ `人´ ○)

    • ベストアンサー
    • PHP
  • PHPでのガラケー、PC、iPhone振り分け

    レッツPHPさんの写メールBBSを使用しています。 iPhoneページを作成し、mailbbs.phpで振り分け設定を試みたのですが どれだけやってもどうにも上手くいきません。 スマートフォンのページ名をmailbbs_smart.htmlとし、 (他のPC用、携帯用ではデフォルトでmailbbs_pc.html、mailbbs_i.htmlとなっていました) 振り分け設定では mailbbs.phpに $ua = explode("/", $_SERVER['HTTP_USER_AGENT']); if (strstr($ua[0], "DoCoMo")) { $env = "i"; // DoCoMo } elseif (preg_match("#^UP.Browser|KDDI#i", $ua[0])) { $env = "i"; // au } elseif (preg_match("#^J-PHONE|Vodafone|SoftBank|MOT#i", $ua[0])) { $env = "i"; // Vodafone } elseif (preg_match($ua[0] , "iPhone")) { $env = "smart"; //iPhone } と記述しました。 他にeregなどでも設定したのですが大抵 ・ページが表示されない か ・PC用のデザインで表示される という風になってしまいます。 htmltamplate.incとの関連付けが上手くいってないからでしょうか。 当方PHPに関してあまり詳しくありません。 レッツPHPさんの写メールBBSを使用した方いましたら、 是非ご教授お願いします。 レッツPHPさんのHP http://php.s3.to/bbs/bbs7.php

    • 締切済み
    • PHP
  • URLの内容チェックがうまくいきません

    $_POST['url']に何らかの値が格納されている場合のみ、正規表現で値をチェックしたいのですが、現在のソースでは$_POST['url']が空の場合も処理が正規表現に移ってしまい、結果エラーが出てしまいます。 if ( isset($_POST['url']) && preg_match('/^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/', $_POST['url']) && mb_strlen($_POST['url']) <= 100){ 【データベース登録処理】 }else{ echo "エラー:入力内容が正しくありません"; } issetあたりが怪しいとは思うのですが、!emptyでも駄目でした。 他に何か書き方がありましたらご教授ください。

    • ベストアンサー
    • PHP
  • PHP 全角・半角・英数字 エラー判定

    PHPを独学で勉強しているものです、あるサイトを構築中で、入力内容のエラー判定をしたいのですが、どうしても半角英字がエラーではじかれず、どなたかご指導いただけますでしょうか。 PHPのバージョンは5.2で、DBはMySQLでユーザーがある情報を登録できるサイトで、データ型にあわせるため、1以上の半角数字のみ受け付けるようにしたいです。 入力欄は3か所で、$ic0、$ic1、$ic2に格納されています。 入力が全角数字の場合はそれぞれを半角数字に自動変換したいとおもっています。 自作したものは下記の通りです。 宜しくお願い致します。 /*エラー判定*/ $ic_check=$ic0.$ic1.$ic2; if(preg_match("/^[0-9]+$/", $ic_check)){ if($ic0=="0" || $ic1=="0" || $ic2=="0"){ $error_msg="1以上の数字を入れてください。"; }else{ $error_msg=""; } } elseif(preg_match("/^[0-90-9]+$/",$ic_check)){ $ic0=mb_convert_kana($ic0, "n", "Shift_jis"); $ic1=mb_convert_kana($ic1, "n", "Shift_jis"); $ic2=mb_convert_kana($ic2, "n", "Shift_jis"); if($ic0=="0" || $ic1=="0" || $ic2=="0"){ $error_msg="1以上の数字を入れてください。"; }else{ $error_msg=""; } } elseif(preg_match("/^[a-zA-Z]+$/",$ic_check)){ $error_msg="半角数字で入力してください"; } else{ $error_msg="半角数字で入力してください"; }

    • ベストアンサー
    • PHP
  • 入力されたテキストからメールアドレス抽出するPHP

    入力されたテキストからメールアドレス抽出するPHPを作りたいのですが、下記の記述では抽出ができません。 どのように文を変えたら抽出できるでしょうか?よろしくお願い致します。 <form action="mail2.php" method="post"> <input type="text" name="text" size="100" value=""/><br /> <input type="submit" name="text" value="テキストからアドレスを抜き出す" /> </form> <?php if( preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/",$text,$match)); echo "アドレス-> {$match[0]}\n"; print $arr_str[0];  ?>

    • ベストアンサー
    • PHP
  • preg_matchと定数について

    preg_matchと定数について $string = "○○ドメイン"; if (preg_match("/$string/", $_SERVER['SERVER_NAME'])) {  echo "○"; } else {  echo "✕"; とやると○になるのですが、 define("DOMAIN", "○○ドメイン"); if (preg_match("/DOMAIN/", $_SERVER['SERVER_NAME'])) {  echo "○"; } else {  echo "✕"; } とすると、✕になります。 なぜでしょうか?

    • ベストアンサー
    • PHP
  • 携帯とPCの振り分け

    同じドメインにて携帯とPCの振り分けなのですが、htaccessにて振り分けたのですが、ブラウザに「振り分けがループしています」とでるのですが、 これはなぜでしょう? htaccessの中身の内容ですが、 DirectoryIndex index.php index.html index.htm これで読み込んだindex.phpの中身は <?php $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/i", $agent)){ header("Location: http://www.○○○○○.com/mobile/index.xhtml"); exit; }else if(preg_match("/^(J\-PHONE|Vodafone|MOT\-[CV]|SoftBank)/i", $agent)){ header("Location: http://www.○○○○○.com/mobile/index.xhtml"); exit; }else if(preg_match("/^KDDI\-/i", $agent) || preg_match("/UP\.Browser/i", $agent)){ header("Location: http://www.○○○○○.com/mobile/index.xhtml"); exit; }else{ header("Location: http://www.○○○○○.com/"); exit; } ?> サーバはlolipopでhtaccessのパーミッションは604で phpのパーミッションは700です。

    • 締切済み
    • CGI
  • サイトが移動しました(301)が出てしまいます。

    以下のようにキャリア判別しましたが、ドコモ(f706i) でみるとサイトが移動しました(301)が出ます。 これはなんとかならないんでしょうか? <?php $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/i", $agent)){ header("Location: ​http://sample.com/i/index.html");​ exit; }else if(preg_match("/^(J\-PHONE|Vodafone|MOT\-[CV]|SoftBank)/i", $agent)){ header("Location: ​http://sample.com/s/index.html");​ exit; }else if(preg_match("/^KDDI\-/i", $agent) || preg_match("/UP\.Browser/i", $agent)){ header("Location: ​http://sample.com/e/index.html");​ exit; }else{ header("Location: ​http://sample.com/pc/index.html");​ exit; } ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう