電子書籍の厳選無料作品が豊富!

はじめまして、お世話になります。
現在PHPで制作を行っています。
早速質問したいのですが
例えば
ページ1(サーバーA)「idとpassword入力画面」
ページ2(サーバーB)「ここにあるid&passwordで認証しokならページ3に進む」
ページ3(サーバーA)「ログイン成功画面」

この状況において
ページ3の生のURLを直接打ち込んだでは閲覧できないようにして、ページ2経由でのみページ3を閲覧できるようにするにはどのようにすればよいでしょうか?

条件は
ページ1で入力したidの値をページ3まで渡すということです。

セッションやクッキーはだめでした。

現在、ページ3ではURLが
http://サーバーA/3.php?id=○○○○となっているため
○○○○の部分を変えれば他のidでログインできてしまいます。

$_GET['id']で一応、値は取れています。


初心者でどうすればいいのかさっぱりです。
どなたか教えていただけませんか?

A 回答 (4件)

サーバBに認証用の隠しページ(のようなもの)を作ってはどうでしょうか。


フォーム入力->内部でサーバBに問い合わせ→ログイン成功
$result = file_get_contents('http://serverB/api_auth.php?id=a&pass=b');

あとはログイン済みの情報をクッキーなりセッションで保持して。
セキュリティが不安ならPOSTに変えたり、idとpassを暗号化して送るとか。
    • good
    • 0
この回答へのお礼

相当遅くなりましたが、お礼申し上げます。
idを暗号化することにしました。
ご意見有難うございました。

お礼日時:2008/01/15 18:57

ページ1,2で使っているフォーム部分をGETからPOSTに変更すればURLにIDは表示されなくなります。


合わせて$_GETも$_POSTに変えましょう。
    • good
    • 0
この回答へのお礼

相当遅くなりましたが、お礼申し上げます。
ご意見有難うございました。

お礼日時:2008/01/15 18:58

物理的に違うサーバーをまたいでの認証ということですか?


サーバーAの画面をサーバーBで認証するということでしょうか?

サーバーAとサーバーBが何かしらつながっている部分があればよいのですが、全く関係ないサーバー同士だと難しいというか無理のような気がします

例えば、webサーバーAとwebサーバーBは違うサーバーだけども、同じDBサーバーを共有している 等でなければちょっと厳しいですね
    • good
    • 0
この回答へのお礼

相当遅くなりましたが、お礼申し上げます。
ご意見有難うございました。

お礼日時:2008/01/15 18:58

がると申します。


おっしゃっている内容は、普通「セッションで」実現可能かと思います。
まぁ確かに、PHPのセッション関数群は基本的に穴が多いのでセキュアにするのは大変なのですが。
そのレベルの精度を出そうとするのであれば、失礼ながら「初心者で」というレベルの方に教えるには相応の労力がかかってしまいます。

ですので、まずは一般的な「セッション関数群」か、或いはPEARのPEAR::Authあたりの使い方をきちんと学ばれる事をお勧めいたします。
    • good
    • 0
この回答へのお礼

相当遅くなりましたが、お礼申し上げます。
ご意見有難うございました。

お礼日時:2008/01/15 18:59

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


おすすめ情報