質問の表現が難しいのですが、

CGIのアクションの結果を、フレームの中の一つとして表示したいのです。

例えば、 http://www.fresheye.co.jp/ の無料メールのように、
ログイン結果をフレーム構成にしたいのです。


そのときに、表示する内容を
href=aaa.cgi?id=xxx&password=xxx
などと記載すると、リダイレクトで表示は出来るものの、
パスワードなどは丸見えになってしまいますよね?


どうしたら、
(1)ソースコードに引数を表示させず
(2)フレームの構成で表示させることが出来るのでしょう?

内容が伝わらなければ補足させていただきます。

このQ&Aに関連する最新のQ&A

A 回答 (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を発行します。この繰り返しですね。

やや難しいですが、これが一番簡単な方法ですよ。
    • good
    • 0
この回答へのお礼

どうもありがとうございます。

Cookieは今まで使ったことがないため、あまり分かりませんが、
なんとなくおっしゃってることは分かりました。


ちょっとやってみます。

_

お礼日時:2001/06/29 17:14

u16さんの考えているフレーム構成で呼び出すと、


通常のHTMLからの呼び出しと同じになるので、
引数を引き継げません。

なので、私の頭ではいい方法が思いつかないのですが、
対応策としては、
パスワードを暗号化してはどうでしょう?

$暗号化済みパス = crypt $パスワード(8文字まで), $暗号の種(英数2文字);

#例
$tane = "9f";#暗号化の種
$crypted = crypt ($password,$tane);

で、

パスワードチェックには、

if(crypt($password,$crypted)){
print "一致してますよ。";
}

しかし crypt関数は、暗号化を解く関数が存在しません。
一致しているかどうかの確認のみになります。
ので、
cryptしたものをパスワードとして保存してしまうと、
パスワードを紛失した人のパスワード要求に応えられませんので注意。

でもこれならパスワードを表示しても
半角英数の羅列ですので、普通の人間には理解不能です。

私のアドバイスも的が外れているので理解不能です。(爆
    • good
    • 0
この回答へのお礼

どうもありがとうございます。
やっぱり無理ですかねぇ。。。

フレッシュアイではどうやってるんでしょう???



暗号化が一番いいのかな・・・

ただ、これって履歴で残りませんか?

オフラインにしたあと、履歴で表示させると
CGIを実行したページが見られるのでは?


とりあえず、お礼申し上げます。

お礼日時:2001/06/25 19:29

簡単にできますよ。


<FRAME TARGET="フレーム名" METHOD="POST" ACTION="aaa.cgi">
です。formタグにターゲット指定できます。
結構知られてないみたいですが、使えますよね。
    • good
    • 0
この回答へのお礼

どうもありがとうございます。

これは知っていました。
私の質問の表現が至らなかったかもしれません。
どうもすみません。


これはたぶん、既にフレームが構成されているときだと思うのですが。。

“ログイン画面がフレームとして構成されていれば”出来るのでしょうが、
私がやりたいのは、“ログイン画面が全く別の場合”にも、実行結果をフレームに盛り込みたいのです。




たとえば、ログイン画面で、

<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>

とすれば良いのかなぁと思ったんです。

ところが、
これではパスワードが丸見えということで悩んでいます。



これについて、私の勘違いもあることかと思いますが、
いろいろ教えてください。

お礼日時:2001/06/22 20:09

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qフォーム(CGI)等を使わない商用のメール自動返信サービス

メールフォーム(CGI)等を使わずに、あるメールアドレスに届いたメールに対して自動返信メールを送信できるサービスを探しています。

詳細な要件は以下の通りです。
・メールフォーム(CGI)は使わない
・OSのメール転送スクリプトは使わない(.forward、aliases等)
・メーラーの自動返信機能は使わない
・返信したメールに広告文が入らない
・商用の有償サービスでもOK
・自動返信メールに(「このメールは自動返信です」みたいな)メッセージと元のメールの内容が記載できる

イメージ的には下記のサービスが合っていますが、それ以外で同様のサービスがありましたら教えてください。
http://123mail.jp/SP/indexpc.html

Aベストアンサー

条件がきびしいですが、なぜここまで制限が多い必要が
あるのか不明です。普通でしたら.forwardがもっとも
有効な処理だと思います。

結局、POPで受信してそこから相手のメアドを抜いた上で、
返信するプログラム・・・という感じでしょうか?
とりあえずは「あるメールアドレスに届いたメール」に
アクセスできる環境が必要になります。
そうでなければあるメールアドレスから転送が必要に
なるので.forwardは必要になりますよね?

.forwardをつかわないとなると、メールが来たという
判断ができないため、受信をトリガーにすることが
できませんがよろしいのですね?
その場合は定期処理でPOP受信を走らせる必要があるので
オーバーヘッドが大きいと思いますが、本当にそれで
いいのですね?

そうであれば、shスクリプトをcronで走らせるような
形のプログラムで実現できそうです。
商用の有償サービス探すよりはスキルしだいですが
ご自身でお書きになった方が汎用的につかえるとおもい
ますが、いかがでしょうか?

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

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で作成した画面でフレームを左右に分割したのですが、
内容が表示できません。
cgiで作成したフレーム分割した画面に
結果を表示させる方法を教えてください。
(cgiの記述の仕方が間違えているのか?
 htmlの<frameset>、<frame>タグの設定の仕方が悪いのか?
 そもそも全体の流れの考え方が間違えているのか?
 分からず、行き詰ってしまっています…。)
どうか宜しくお願いいたします。

■作成したファイルは下記のような仕様です。
TEST.html :ボタン操作で、AAA.ccを実行する。
AAA.cc ...続きを読む

Aベストアンサー

> cgiで作成したフレーム分割した画面に
> 結果を表示させる方法を教えてください。

HTMLの解説書や解説サイトには書かれてなさそうな、これを実現するアルゴリズムだけ補足します。

フレームのないページ(TESTt.html)からフレームページ(AA)へ移動し、その中の1フレーム(BB)で結果を表示する場合、

TEST.htmlからAAへはデータを送られますが、AAとBBはデータを共有することはできません。
そこで、<frame src="BB?(この部分)">に記述することで、AAからBBへデータを渡せます。
BBは環境変数 QUERY_STRING からこのデータを受け取れます。

Qi'm looking forward to seeing you.のforwardは副詞なので語順

i'm looking forward to seeing you.のforwardは副詞なので語順は自由なので
i'm looking to seeing you forward.という風にはできますよね?

Aベストアンサー

英語については素人ですが、二年間の米国留学、かなり多量読みましたので、ひと言。
>looking forward to seeing you
は完全に「慣用句」なので、ネイティブは「分かるけど、変な英語だな」と思うでしょう。

Q【CGI】表示先のフレームに結果を残したまま次の結果を表示したい

上下分割フレームで、上側にCGI、下側に仮ページとしてHTMLを置いています。

上側のCGIに数値を入力して送信ボタンを押すと、下側のページに結果が表示されるようになっています。


そこで質問です。
送信ボタンを押して結果が表示されますが、もう一度、今度は違う数値を入力して送信ボタンを押すと、先ほど表示されていた内容が消えて、新しい内容が表示されます。

これを、先ほどの結果を残したままさらにその下に次の結果を表示にするにはどうすればいいでしょうか?


よろしくお願いします。

Aベストアンサー

Ajaxを使うと言ってもたぶんわからないと思うので、CGI(サーバー側)だけで出来る処理を、、、

前回の投稿内容をサーバー側で保存しておき、
投稿がある度にその保存した内容と、新しく投稿された内容を合わせて出力してください。

・投稿1回目 「5」
 サーバー側で「5」をファイルに保存、5を表示するHTMLを出力
・投稿2回目 「8」
 1回目の時に保存したファイルから「5」を読み込み、今回の「8」とあわせて「5,8」を表示するHTMLを出力
 ファイルには「5,8」を保存
・3回目以降も2回目と同様にファイルの内容と投稿の内容を合わせてHTMLの出力とファイルの保存をしていく

セッション(クッキー)を使うことで、保存した内容が誰が投稿した物かを判断することができます。

BBSのCGIがたくさん公開されていますから、それを参考にしてみて下さい。

Qサーブレットforward時の実行メソッドについて

初歩的な質問で失礼します。

サーブレットAに doGet, doPost, serviceメソッドを実装しています。
サーブレットBのdoPostメソッド内にて
サーブレットAにforwardを実行する場合に、
呼出されるのはサーブレットAのどのメソッドですか?

JSPへのforwardはできたのですが、
サーブレットへのforwardができず悩んでいます。

サーブレットのAPIを読んでもいまいちわかりません。
何かメソッドに関する制約があるのでしょうか?
上の質問は全くマト外れでしょうか?

追加ですが・・・
サーブレットからforwardされたサーブレットで、
そこからさらにJSPへforwardすることはできますか?

Apache2.0.43+tomcat4.1.12+Java1.4.0_01です。

Aベストアンサー

> サーブレットBのdoPostメソッド内にて
> サーブレットAにforwardを実行する場合に、
> 呼出されるのはサーブレットAのどのメソッドですか?

doPost() のはず。実際には、forward するときの HttpServletRequest#getMethod() で取得できる文字列に従うはず。

> JSPへのforwardはできたのですが、
> サーブレットへのforwardができず悩んでいます。

forward に関して、servlet と JSP の違いはないはず(というか、JSP は自動コンパイルされる servlet だし)。
getRequestDispatcher() してるパスが間違っているのだと思います。

> サーブレットからforwardされたサーブレットで、
> そこからさらにJSPへforwardすることはできますか?

コンテナの実装次第だけど、forward() は、サブルーチン呼び出しと変わらないはずなので、
回数に制限はないはず。

Q[返信]

夜分にすみません。
[~]の鍵括弧はどういう言語なのでしょうか?
htmlの辞書に載っていませんでした・・。

Aベストアンサー

ブラウザで見ると
[返信]
って感じになり「返信」のトコだけ下線付きのリンクになります。
「[」と「]」は単なる文字ですよ(笑)

Q英語look forward to ---ing

いつもお世話になっております。

英語の質問ですが、
look forward to ---ing の構文が文法的に今一つしっくりせず困っております。

I'm looking forward to seeing you.

上記文章は何文型なのでしょうか。

toは前置詞。forwardは副詞? 1文型でしょうか?

Aベストアンサー

 お考えの通りforwardが副詞でtoが前置詞、前置詞ですから名詞、動名詞が続くことになります。
動詞が他の名詞や副詞、前置詞などと結びついて「本来の意味から発展した意味」を示し動詞と同様に働く時にまとめて句動詞として扱われますので、S+V+Oの第3文型として理解しておいていいのだと思います。

QCGIをフレームで表示するには…

HTMLを複数作ると管理が大変なので、ひとつのCGIにまとめようかと思ってます。
HTMLフレームから、左と右をひとつのCGIファイルから呼び出すにはどうしたらよいでしょうか?

私は、CGI作ったことないので、ソースがわかりません。
パーミッションとかは、フリースプリクトの掲示板とかをいぢっているのでわかるのですが…

簡単なCGIのソースがほしいです、どなたか教えてください。

Aベストアンサー

簡単にperlでソースを紹介しましょう!!
(必要においてカスタマイズして下さい。)
-------------------------------
if($in{'page'} eq 'a'){
&page_a_disp;
}
elsif($in{'page'} eq 'b'){
&page_b_disp;
}
else{
&page_main_disp;
}
-------------------------------
sub page_a_disp{
print <<"END";
<html>
PAGE A
</HTML>
END
}
-------------------------------
sub page_b_disp{
print <<"END";
PAGE B
<html>
</HTML>
END
}
-------------------------------
sub page_main_disp{
print <<"END";
<html>
<frameset>
<frame name="z.cgi?page=a">
<frame name="z.cgi?page=b">
</frameset>
</html>
END
}
-------------------------------
となります。
参考にして下さい。

簡単にperlでソースを紹介しましょう!!
(必要においてカスタマイズして下さい。)
-------------------------------
if($in{'page'} eq 'a'){
&page_a_disp;
}
elsif($in{'page'} eq 'b'){
&page_b_disp;
}
else{
&page_main_disp;
}
-------------------------------
sub page_a_disp{
print <<"END";
<html>
PAGE A
</HTML>
END
}
-------------------------------
sub page_b_disp{
print <<"END";
PAGE B
<html>
</HTML>
END
}
-------------------------------
sub page_main_di...続きを読む

Qlook forward to ~ing について

英語の文法についてなんですが、 この look forward to ~ing の
forwardは副詞ですか?

あとこの to が前置詞だから そのあとに動詞が来る場合には ingにしなければならないのですが、 なぜ toなのですか? 別に look forward in ~ing や look foward at ing にしてもよさそうなのですが、文法的には間違ってるのですか?

あと to 不定詞として使って、look forward to + 動詞の原型として使ってよさそうなのですが、だめなのですか?

分かる方がいたら助けてください><

Aベストアンサー

こんばんは。

>>>forwardは副詞ですか?

そのとおりです。
手元の英英辞典でもそうなっていますし、
こちらでも、そう書かれています。
http://eow.alc.co.jp/forward/UTF-8/?ref=sa


>>>なぜ toなのですか? 別に look forward in ~ing や look foward at ing にしてもよさそうなのですが、文法的には間違ってるのですか?
>>>あと to 不定詞として使って、look forward to + 動詞の原型として使ってよさそうなのですが、だめなのですか?

よくあるタイプの質問ですね。
文法というものは、すでに世の中にある言葉を体系化しただけのものにすぎません。
look forward at という言い方や look forward to 原形 という言い方はありません。
ですから、文法的に間違っている以前に、言葉として間違っているのです。

日本語でも、たとえば、
「僕は気がついた」
という文があるとき、文法的には主語は「気が」です。
しかし、
100%近くの日本人は、「気がついた」で一つの動詞と見なし、
主語は「僕は」であると考えているはずです。
ですから、
「僕は」を「僕の」に替えて、
「僕の気がついた」とするのは文法的には誤りではありませんが、言葉として間違っています。



なお、
look を動詞としてではなく名詞として扱い、
“look forward”でひとくくりの名詞のようにして、
“A Look Forward At ~”
という言い方は、たまに使われるようです。
未来に関して「~の展望」といった感じの意味です。


以上、ご参考になりましたら。

こんばんは。

>>>forwardは副詞ですか?

そのとおりです。
手元の英英辞典でもそうなっていますし、
こちらでも、そう書かれています。
http://eow.alc.co.jp/forward/UTF-8/?ref=sa


>>>なぜ toなのですか? 別に look forward in ~ing や look foward at ing にしてもよさそうなのですが、文法的には間違ってるのですか?
>>>あと to 不定詞として使って、look forward to + 動詞の原型として使ってよさそうなのですが、だめなのですか?

よくあるタイプの質問ですね。
文法とい...続きを読む

Aベストアンサー

>画像ヘッダとはどういうものでしょうか?

Content-type: image/gif
Content-type: image/png
Content-type: image/jpeg

など、画像タイプごとに決まっています。
<img>タグに普通の画像ファイルが指定されている場合は
Webサーバが画像ファイルの拡張子から判断して返してくれ
ますが、CGIから返されるデータの種類は拡張子からは判断
できないのでCGI内部からヘッダを返す必要があります。


●CGIがPerlの場合で、GIF画像をCGIから返す例
#!/path/to/perl
print "Content-type: image/gif\n\n";
open(GIF, "file.gif");
binmode(GIF); binmode(STDOUT);
print <GIF>; close(GIF);

もちろん、CGIからは画像フォーマットを返せばいいので、
ファイルから読まずにあらかじめCGIソース内に画像データ
を持っておいて出力する方法も可能です。


ちなみに、多くのCGIではHTMLコンテンツを返す場合が多い
ので、ヘッダは以下のようになります。

print "Content-type: text/html\n\n";

>画像ヘッダとはどういうものでしょうか?

Content-type: image/gif
Content-type: image/png
Content-type: image/jpeg

など、画像タイプごとに決まっています。
<img>タグに普通の画像ファイルが指定されている場合は
Webサーバが画像ファイルの拡張子から判断して返してくれ
ますが、CGIから返されるデータの種類は拡張子からは判断
できないのでCGI内部からヘッダを返す必要があります。


●CGIがPerlの場合で、GIF画像をCGIから返す例
#!/path/to/perl
print "Content-type: image/gif\n\n...
続きを読む


人気Q&Aランキング