アプリ版:「スタンプのみでお礼する」機能のリリースについて

すみません。もう何日も悩んでしまっているので、どなたかお知恵をお貸しください・・・PHP初心者なので、分かりづらい部分が多々あるかと思います。申し訳ないです。
【質問】
自分で借りているサーバーを http://www.○○○.com とします。
もうひとつ、他社で無料で会員制ショッピングカートのようなものを借りています。http://□□□.com/index.php とします。
http://www.○○○.com/index.php を作成し、ページの上部でその他社のショッピングカートではない部分(凝ったメニューや、タイトル部分)を表示させて、その後に
<?php
$flag=0;
$_GET[site] = "http://□□□.com/index.php";
$page = @file($_GET[site]);
if($page=="") die("Connection Failed");

echo "<base href='http://□□□.com/index.php'>";
while (list($num, $line) = each($page)){
if(eregi("</body",$line)){ $flag=2;}
if($flag == 1){ echo $line; }
if(eregi("<body",$line)){ $flag=1;}
}
?>
という感じで、そのショッピングカートページの<body>から</body>部分を出力させています。
カートページでは、ログインすると、ページ上部の右側にログインしました状態ですよ。という感じの表示が出ます。登録してある名前が出て、○○さん、ようこそ♪みたいな感じです。
上のようにカートページを引っ張ってきて表示させてる状態で、http://www.○○○.com/index.php からフォームよりログインしようとしても、そのログインしたよ。というような表示が出ません。
ちなみに、ログインフォームは action="http://□□□.com/index.php" でメゾットがPOSTです。
login_idとlogin_passをフォームで送信して、ログイン状態にしているようです。
どうしたら、ログインした状態のカートページを出力できますでしょうか?

A 回答 (2件)

mihomaru さん、おはようございます。



さてご質問ですが、他社のHPの<body>~</body>部分を持ってきて、自分のところへ表示させているわけですが、残念ながら これではうまく動作しません。
 http://□□□.com/index.php は、その他社サーバのその位置に置かれて初めて、正しい動作をします。にもかかわらず、<body>~</body>だけを抜き出して全然別のサーバの、別ファイルに組み込んでしまうと、動作条件が変わってきてしまいます。
 あと、セッションの問題もあると思います。これについてはお手持ちの書籍などでお調べになってみてください。

…ご質問、書き方が大変スッキリとしてわかりやすく、助かりましたよ。mihomaru さんはきっと良いエンジニアになることができるでしょう。

この回答への補足

先ほどの続きです。・・・続き
http://□□□.com/index.php を表示させるとログインしているということは、表示させる段階(ページを読み込む時)でセッションを取得して情報取得→ログインとしてから、ページを出力していると思うのです。ということは、
$_GET[site] = "http://□□□.com/index.php";
$page = @file($_GET[site]);
の時には、すでにhttp://□□□.com/index.phpはログインした状態のファイルを読み込んでいることにはならないのでしょうか・・・?
また、セッションは、ページ間はずっと保たれると思うので、http://www.○○○.com/index.php からでも問題ないのでは?と思ったのですが・・・$page = @file($_GET[site]);の一文はhttp://□□□.com/index.phpの既に読み込まれて出力されたファイルを引っ張ってきているという意味にはなっていないのでしょうか?

悪あがきですみません。
分かりやすく伝えるのは本当に難しいですね;申し訳ありません!
頑張って良いエンジニア・・・になりたいです(^^;
丁寧に答えていただきありがとうございました。

補足日時:2007/01/28 17:54
    • good
    • 0
この回答へのお礼

hkd90011さん、ご回答ありがとうございました!

そうなのですね・・・自分でも無謀だなぁとは思っていました;
インラインフレームを利用すれば、同じような動作が問題なく動くのですが、検索(SEO)の面から見てもphpで出力したほうが、良いと思ってこの方法で何とか考えていました。

この方法はあきらめるしかないと、尚更思ったのですが、あがきでもう少し質問させてください!
例えば、​http://www.​○○○.com/index.php からログインすると、上記のように自分の思い通りには動かないのですが、その次に http://□□□.com/index.php を表示すると、ちゃんとログインしているのです。クッキーを削除してページを更新してもログイン状態であるし、プラウザを閉じて、また、カートページを表示させると、ログアウトしていることから、教えていただいたように、セッション?を利用しているのだと思うのですが・・・
(長くなりそうなので、次に続かさせてください;;;)・・・続く

お礼日時:2007/01/28 17:54

まず、カートページへログインした際に発行されるセッション情報は、


ブラウザを閲覧しているあなたの情報を基に構築されます

次に、○○○.com側のindex.phpで実行される処理

> $_GET[site] = "http://□□□.com/index.php";
> $page = @file($_GET[site]);

この場合、http://□□□.com/index.phpにアクセスしたのは、
ブラウザを閲覧しているあなたではなく、○○○.com側の実行サーバです

なので、ログイン状態にする為の判別データ(あなたの情報)を
保持していない実行サーバから見たhttp://□□□.com/index.phpは
当然ログインも何もしていない状態です

その状態での出力内容を取得して、html内容として吐いてるだけなので、
○○○.comでindex.phpを見ても、あなたがログインした状態にはならないということです

//
要するに全てを可能にするには、□□□.comのカート用システムも把握(or編集)できないと無理ですよ、ということです
    • good
    • 0
この回答へのお礼

suzuki-_-さん、レスありがとうございます。
なるほど、納得です。
とりあえず、□□□.comのカートシステムはある程度は編集できるので、もう少しセッションについて勉強して、もう少しチャレンジしてみます。
ありがとうございました!

お礼日時:2007/01/29 00:50

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