• ベストアンサー

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

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

  • u16
  • お礼率40% (100/250)
  • CGI
  • 回答数3
  • ありがとう数7

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

  • ベストアンサー
回答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

  • cgiで表示したフレームに結果を表示したい

    cgiで作成した画面でフレームを左右に分割したのですが、 内容が表示できません。 cgiで作成したフレーム分割した画面に 結果を表示させる方法を教えてください。 (cgiの記述の仕方が間違えているのか?  htmlの<frameset>、<frame>タグの設定の仕方が悪いのか?  そもそも全体の流れの考え方が間違えているのか?  分からず、行き詰ってしまっています…。) どうか宜しくお願いいたします。 ■作成したファイルは下記のような仕様です。 TEST.html :ボタン操作で、AAA.ccを実行する。 AAA.cc   :作成した画面上のリンクをクリックすることでBBB.ccを実行する。         画面は左右にフレーム分割し、         左側フレームにAAA自身の実行結果として取得したファイルのリストを         右側フレームにファイルリストでリンクした画面を表示させる。 BBB.cc  :AAAから指定されたリンクを加工して開く。 ■ファイルの内容は下記のような感じです…。 >>>TEST.html <form action="**パス**/AAA"> <input type="hidden" name="path" value="**AAAに渡すデータ**"> <input type="submit" value="リスト"> </form> >>>AAA.cc cout << "<frameset cols=\"30%,*\">" << endl; cout << "<frame src=\"**パス**/\" name=\"listA\">" << endl;  :(省略) cout << "<a href=\"**パス**/BBB?path=" << BBBに渡すデータ << "\" target=\"ContensB\" >" << endl;  :(省略) cout << "<frame src=\"**パス**/\" name=\"ContentsB\">" << endl; cout << "<html>" << endl; cout << "<head>" << endl; cout << "<title>Contents</title>" << endl; cout << "</head>" << endl; cout << "<body>" << endl; cout << "</body>" << endl; cout << "</html>" << endl; cout << "</frameset\">" >>>BBB.cc  :(省略) cout << getContents() << "<br>" << endl;  :(省略) どうか宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • PHPでCGIの処理結果を使うには?

    cgiの処理結果をPHPで使う方法を教えてください。 いろいろ調べてみたのですが、わかりませんでした。 内容としては以下です。 http://xxx.xxx.xxx/xxx.cgi が既にあり、これは共有して使っているものなので、変更できない。 このcgiの処理内容は、引数を渡して、POSTすると、処理結果に応じて、trueかfalseをprintするというものです。 このcgiの処理結果をPHPで受け取り、処理の分岐のための判別に使いたいと考えています。 試したのは、 1.htmlから値を渡してpostする。 →cgiのURLに遷移してtrueが表示される。 2.PHPでheader(Location:)で指定してみる。 →1と同じ です。 どうすればいいのか教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • cgiにフレームをかけたら動作しなくなりました。

    cgi初心者です。よろしくお願い致します。 cgiが完成したので、それにフレームをかけ、cgiからsendmailへの送信内容を変更したのですが、変更されず前のまんまで送られてきてしまします。 AAA.html(フォーム)→AAA.cgi→BBB.htmlというものに、すべてTOPフレームをかけてフレームセットとしたらそうなりました。 フレームセットにしてからリンク先を何も変更しておりません・・・そのせいでしょうか??? 一体どうしてこんなことになってしまったのでしょうか?またこれを回避する方法があると思うのですが、教えていただければ幸いです。よろしくお願い致します。

    • 締切済み
    • CGI
  • cgiでフレーム分割した画面を作成したい。

    理解不足で質問の意味が分かりにくいかと思いますが、 どうか宜しくお願い致します。 TEST.html という画面に用意したボタン“A”をクリックした時、 aaa.cc というcgiを実行して画面を作成・表示させています。 やりたいことは、下記の通りです。 このaaa.ccで表示している画面を左右にフレーム分割して、 左側のフレームにaaaで作成した画面を、 右側のフレームにbbb.ccというcgiを実行して作成した画面を表示させる。  bbb.ccは、aaa.ccで作成したhtml内のボタン“B”をクリックし  た時、<form action=“bbb”>を実行し作成します。

    • ベストアンサー
    • CGI
  • フレームを指定して結果を出力するには?

    2つのフレームに分割されたサイトを作っています。 仮に、フレームをAとBとします。 AのフレームはCGIで、フォームアクション用のボタンが一つ表示させています。データの送信先は、自身のCGIです。 このCGIで、処理結果によって、表示する(起動する)フレームを分けたいと思っています。 ある結果であれば、全てのフレーム(_top)をリロード、別の結果であれば、自身(_self)のような感じです。 かなり前から悩んでいるのですが、なかなか解決出来ません。こちらの履歴も調べたのですが、ズバリの回答は見つける事が出来ませんでした。 お分かりになる方がいらっしゃいましたら、お教え下さい。 よろしくお願いします。

  • form actionでよそのサーバーのcgiファイルが読込めない。

    form actionに外のサーバーのcgiファイルを指定しています。 ドメイン名以下のパスは通っているのですが、ドメイン名が表示されない(読込まれない)。 Not Found The requested URL /xxx/xxx.cgi was not found on this server. になってしまいます。 読込み元のHTMLはフレームに分けてありますが、ここも問題があるのでしょうか。 そもそも外のcgiファイルはよみこめないのでしょうか、 それとも他に問題が、あるのでしょうか。 又、パーミッション、セキュリティも問題ありますか。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • 【CGI】表示先のフレームに結果を残したまま次の結果を表示したい

    上下分割フレームで、上側にCGI、下側に仮ページとしてHTMLを置いています。 上側のCGIに数値を入力して送信ボタンを押すと、下側のページに結果が表示されるようになっています。 そこで質問です。 送信ボタンを押して結果が表示されますが、もう一度、今度は違う数値を入力して送信ボタンを押すと、先ほど表示されていた内容が消えて、新しい内容が表示されます。 これを、先ほどの結果を残したままさらにその下に次の結果を表示にするにはどうすればいいでしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI
  • 複数のCGIにデータを渡したい

    現在、2分割のフレームでA.cgi(frame1)とB.cgi(frame2)を表示させています。 <form method=post action="A.cgi" target="frame1"> <input type=submit value="name"> </FORM> でA.cgiにnameが送信された結果がframe1に表示されますが、この1つのボタンクリックで同時にnameをB.cgiにも送信し、結果をframe2に表示させるにはどうしたらいいでしょうか?

    • ベストアンサー
    • CGI
  • どうしてもフレームの右に表示できない

    フレームを使用してて <A HREF="XXX.html" TARGET="migi">右</A> で右に表示させようとしたのですが なぜか新しいフレームが表示されてしまいます 何故なのでしょうか?

  • このような掲示板のCGIを探しています

    私の使用しているプロバイダでは通常のHPのURLと、CGI専用のURLがあります。 通常)http://www.aaa.com/index.html CGI)http://cgi.aaa.com/bbb.cgi 掲示板を置きたいのですが、私が探してきたCGIスクリプトはどれも http://cgi.aaa.com/xxx.cgi のような感じで使用するものばかりで、できればURLを http://www.aaa.com/bbs.html としてcgi は<form action="........>で指定するだけにしたいと思っています。 BBSは通常の(tcupなどにあるようなモノ)と、スレッド式の両方欲しいです。 このようなCGIスクリプトをご存知の方、どこのサイトにそのようなものがあるか 教えて頂けないでしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI