dポイントプレゼントキャンペーン実施中!

phpで、アクセスしてきたIPアドレスをIDとして上記のような専用のページを作りたいのですがどうしたら良いのでしょうか?

携帯電話から使えるPHPのショッピングカートを作りたいと思っています。

今使っているフリーのカートPHPとデータを共有したいので自作しかないと思い質問しました。

商品の表示等はできるのですが、どうしてもカートに入ってくれないので困っています。

そこで、タイトルのようなページを作成してそこに商品の情報を書き込んでいけばよいのでは?と思いました。

全く見当違いでしょうか?

どなたかご教示いただけませんでしょうか?

宜しくお願い致します。

A 回答 (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/
    • good
    • 0
この回答へのお礼

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

ありがとうございました。

お礼日時:2006/06/04 11:58

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/05/30 20:47

携帯電話って、プロキシ挟んでますからIPアドレスはほとんど同じですよ。

つか、環境変数で取得できなかったでしたっけ?
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/05/30 01:50

IPアドレスをIDにする意味はありません。


前ページで選択したモノはIPアドレスで渡されるわけ
ではないので。
基本的なデータを全て繋いで、page.phpに
渡してやるしかないですね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/05/30 01:51

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