• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ソースの意味がわかりません。)

PHPソースの意味がわからない!ブラウザの判定とセッションの処理について

このQ&Aのポイント
  • PHPのコミュで質問し、回答をいただきましたが、ソースの意味がわからず困っています。特にget_browser()関数やis_browser_pc()関数、session_url_smart()関数の一部が理解できません。
  • get_browser()関数はブラウザを調べるためのものですが、is_browser_pc()関数はどのような判定を行っているのか分かりません。また、session_url_smart()関数の一部である「$url.= (strpos($url, '?') === false ? '?' : '&') . SID;」の意味も理解できません。
  • 初心者なので、これらのソースの意味や処理について詳しく教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.3

>$is_pc = __is_browser_pc(); >if (!$is_pc) ini_set('session.use_trans_sid', '1'); __is_browser_pcは、先頭で定義した、「docomo/au/softbankのブラウザ以外」であるかを調べる関数ですね。 if (!$is_pc) は、その値がfalseだったら、「携帯ブラウザ以外で無かった」ら==「携帯ブラウザなら」ということで、その場合、 ini_set('session.use_trans_sid', '1'); で、php.ini に session.use_trans_sid = on と設定したのと同じ効果を出します。 session.use_trans_sid をonにしているのは、docomo携帯だとクッキーが使えないのでURLにセッションIDを含ませるためでしょう。他社はクッキーが使えますが、三社同じ動作にしているわけです。

tama-2009
質問者

お礼

お礼が遅くなって申し訳ないです。 URLにセッションIDを含ませるんですね。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

A ? B : C のような記述を3項演算子といいます。 Aが真の場合はB、Aが偽の場合はCの値を返します。

tama-2009
質問者

お礼

3項演算子だったんですね。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.1

2つめのreturnの意味はないでしょう。書かなくても動作も意味も同じ。 つぎのは、$url の中に ? の文字が入っているかどうかによって処理を変えています。 $urlが"http://example.com/abc.php"の場合、"?" と SIDを連結。 $urlが"http://example.com/abc.php?parm=xyz"の場合、"&" とSIDを連結。

tama-2009
質問者

補足

ありがとうございます。 やっぱり2つ目のreturnの意味はないのですね。 もうひとつ質問するのを忘れていました。 if (!$is_pc) ini_set('session.use_trans_sid', '1'); の意味はなんでしょうか? 追加の質問で申し訳ないですが、よろしくお願いいたします。

すると、全ての回答が全文表示されます。