• ベストアンサー

CGIのアクション結果をフレームの中に入れるには?

質問の表現が難しいのですが、 CGIのアクションの結果を、フレームの中の一つとして表示したいのです。 例えば、 http://www.fresheye.co.jp/ の無料メールのように、 ログイン結果をフレーム構成にしたいのです。 そのときに、表示する内容を href=aaa.cgi?id=xxx&password=xxx などと記載すると、リダイレクトで表示は出来るものの、 パスワードなどは丸見えになってしまいますよね? どうしたら、 (1)ソースコードに引数を表示させず (2)フレームの構成で表示させることが出来るのでしょう? 内容が伝わらなければ補足させていただきます。

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

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

すいません、こちらこそ、勘違いしていました・・・。 一番簡単な方法はCookieを使う方法です。送った先のCGI内でID及びパスワード認証を行います。認証に成功すればセッションIDを発行します。セッションIDをCookieに登録します。フレーム構成のHTMLを書き出します。 <frameset rows="140,*"> <frame src="top.html"> <frame src="aaa.cgi"> #※1 </frameset> ※1のCGIでCookieに登録されたセッションIDとデータベースに登録されたセッションIDを照合し、そのセッションIDを持つユーザ情報を引き出します。もちろんセッションIDは乱数なので適当に入力して入れることはありません。また、CookieにセッションIDがなければ無効ですし、Cookieは一定時間後に消去します。次のログインには新しいセッションIDを発行します。この繰り返しですね。 やや難しいですが、これが一番簡単な方法ですよ。

u16
質問者

お礼

どうもありがとうございます。 Cookieは今まで使ったことがないため、あまり分かりませんが、 なんとなくおっしゃってることは分かりました。 ちょっとやってみます。 _

その他の回答 (2)

  • duckling
  • ベストアンサー率47% (88/185)
回答No.2

u16さんの考えているフレーム構成で呼び出すと、 通常のHTMLからの呼び出しと同じになるので、 引数を引き継げません。 なので、私の頭ではいい方法が思いつかないのですが、 対応策としては、 パスワードを暗号化してはどうでしょう? $暗号化済みパス = crypt $パスワード(8文字まで), $暗号の種(英数2文字); #例 $tane = "9f";#暗号化の種 $crypted = crypt ($password,$tane); で、 パスワードチェックには、 if(crypt($password,$crypted)){ print "一致してますよ。"; } しかし crypt関数は、暗号化を解く関数が存在しません。 一致しているかどうかの確認のみになります。 ので、 cryptしたものをパスワードとして保存してしまうと、 パスワードを紛失した人のパスワード要求に応えられませんので注意。 でもこれならパスワードを表示しても 半角英数の羅列ですので、普通の人間には理解不能です。 私のアドバイスも的が外れているので理解不能です。(爆

u16
質問者

お礼

どうもありがとうございます。 やっぱり無理ですかねぇ。。。 フレッシュアイではどうやってるんでしょう??? 暗号化が一番いいのかな・・・ ただ、これって履歴で残りませんか? オフラインにしたあと、履歴で表示させると CGIを実行したページが見られるのでは? とりあえず、お礼申し上げます。

回答No.1

簡単にできますよ。 <FRAME TARGET="フレーム名" METHOD="POST" ACTION="aaa.cgi"> です。formタグにターゲット指定できます。 結構知られてないみたいですが、使えますよね。

u16
質問者

お礼

どうもありがとうございます。 これは知っていました。 私の質問の表現が至らなかったかもしれません。 どうもすみません。 これはたぶん、既にフレームが構成されているときだと思うのですが。。 “ログイン画面がフレームとして構成されていれば”出来るのでしょうが、 私がやりたいのは、“ログイン画面が全く別の場合”にも、実行結果をフレームに盛り込みたいのです。 たとえば、ログイン画面で、 <form method=post action=aaa.cgi> <input type=text name=id> <input type=password name=pass> <input type=submit name=act value=login> </form> としておいて、 結果を、 <frameset rows="140,*"> <frame src="top.html"> <frame src="aaa.cgi"> #←cgiの結果画面 </frameset> としたいのです。 この場合、「login」で“フレームを書かせるCGI”を実行し、 「frame src=aaa.cgi」 でリダイレクトするのかなぁと思ったのですが、 これだと引数を引き継げないようで。。。 そこで、 <frameset rows="140,*"> <frame src="top.html"> <frame src="aaa.cgi?id=xxx&pass=xxx&act=login"> </frameset> とすれば良いのかなぁと思ったんです。 ところが、 これではパスワードが丸見えということで悩んでいます。 これについて、私の勘違いもあることかと思いますが、 いろいろ教えてください。

関連するQ&A

専門家に質問してみよう