• ベストアンサー

http://hogehoge.com/page.php?ID=***について

phpで、アクセスしてきたIPアドレスをIDとして上記のような専用のページを作りたいのですがどうしたら良いのでしょうか? 携帯電話から使えるPHPのショッピングカートを作りたいと思っています。 今使っているフリーのカートPHPとデータを共有したいので自作しかないと思い質問しました。 商品の表示等はできるのですが、どうしてもカートに入ってくれないので困っています。 そこで、タイトルのようなページを作成してそこに商品の情報を書き込んでいけばよいのでは?と思いました。 全く見当違いでしょうか? どなたかご教示いただけませんでしょうか? 宜しくお願い致します。

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

  • ベストアンサー
回答No.4

私自身は session_cache_limiter('private, private_no_expire'); と宣言した事はありませんので、その場合の動きについては検証した経験はありません。悪しからず。 携帯からの場合は、ある程度動きが制限され、またキャリアによっても動きが違うのでは無いでしょうか。 下記URLあたりを参考にしてみて下さい。 セッション関数では、デフォルトではセッションIDをCookieに格納します。質問者の環境ではsession_cookieあたりの設定がどうなっているか分かりませんが、例えばsession.use_only_cookies がONの場合は、Cookieを受け付けないブラウザだと動きがおかしくなると思います。 最近の携帯ではある程度Cookieが使えるようですが、サーバにCookieを格納するようなシステムだったりするので、動きを検証する必要はあると思います。 長いURLになってしまいますが、session.use_cookiesをoffにすれば、勝手に長いURLを発行してくれると思います。 SID付きの長いURLは多少ですがセキュリティ上心配がある事は否めませんが、1回限りのセッションであればあまり心配は要らないと思います。 長いSID付きの長いURLはサーバで自動的に発行されます。session.use_cookiesを変えられないような場合は、下記のように強制的にSIDを付加する事も可能ですが。 <a href="test.php?<?php echo session_name()."=".session_id(); ?>">リンク</a>

参考URL:
http://crosslamina.com/contents/ke-tai/
father001
質問者

お礼

出張のためお礼が遅くなりました。申し訳ありません。 session.use_cookiesをoffでできました。 ありがとうございました。

その他の回答 (3)

回答No.3

IPアドレスは一般に不動である保証は無い(というより基本的には動的)ので、危険だと思いますが。 別の人間が同じIPで接続した場合(同じプロバイダ経由の別人)、前の人間のデータが残っている事になります。 カートを作りたいという事でしたら、「セッション」と言う概念を理解する必要が有ります。 PHPではセッション管理は非常に簡単です(PHP > 4)。 セッション関数で session_start(); と宣言するだけです。 セッションIDには想定が非常に難しいユニークキー(唯一無二)が自動的に割り当てられますので、別の人間が同じIDを使う心配もほとんどありません。 セッション内の数値は、セッション変数に格納する事が出来ます。 例えば一番目の画面で、単価380円のイチゴを3つカートに入れたとすると $_SESSION[0][item_name] = "いちご" ; $_SESSION[0][item_tanka] = 380 ; $_SESSION[0][item_kazu] = 3; と格納します。 次の画面では単価150円のバナナを1つカートにいれたとします。 $_SESSION[1][item_name] = "バナナ" ; $_SESSION[1][item_tanka] = 150 ; $_SESSION[1][item_kazu] = 1; 最後の画面で集計するときは、例えば $total = ($_SESSION[0][item_tanka]*$_SESSION[0][item_kazu]) + ($_SESSION[1][item_tanka]*$_SESSION[1][item_kazu]); として求める事が出来ます。 とても簡単ですよ。 PHPで老舗的なページや古いソースでは、PHP3を使っているものが有ります。当時セッション管理は非常に面倒で、いくつかのライブラリで管理したりしました。phpLibあたりを使っているソースは、基本的にPHP3の頃のものが多いので、今となってはあまり参考にしないほうが良いかもしれません(register_globalがonでないと 動かないスクリプトも多い)。 PHP4以降はセッション関数が出来ましたので、こちらでスマートに設計するのが良いと思います。

参考URL:
http://php.s3.to/man/ref.session.html
father001
質問者

お礼

ご教示ありがとうございます。sessionについて勉強を開始しました。 もしお手すきでしたらもう一つご教示いただきたいのですが、 session_cache_limiter('private, private_no_expire'); session_start();と書いてその後ソースを書いているのですが、PCからのアクセスでは/tmpのlog?にちゃんと読み書きできるのですが、携帯からだとどんどん新しいlog?(ID)を作って行ってしまいます。 よく通販サイトで見かける *.php?=0e1245r01244752 のような長いURLにしなければいけないのでしょうか? だとするとどうすれば、長いURLを携帯に表示することができるのでしょうか? 宜しくお願い致します。

  • OsieteG00
  • ベストアンサー率35% (777/2173)
回答No.2

携帯電話って、プロキシ挟んでますからIPアドレスはほとんど同じですよ。つか、環境変数で取得できなかったでしたっけ?

father001
質問者

お礼

IPは環境変数で習得できました。ありがとうございました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

IPアドレスをIDにする意味はありません。 前ページで選択したモノはIPアドレスで渡されるわけ ではないので。 基本的なデータを全て繋いで、page.phpに 渡してやるしかないですね。

father001
質問者

お礼

PHPを細かく分割していたのが悪かったんですか・・・ もう少しがんばってみます。ありがとうございました。

関連するQ&A