- ベストアンサー
アンケートCGI作成について、form actionの呼びだし等につい
- 初心者でも簡単にできるアンケートCGI作成の方法とは?
- アンケートページ間の移動やデータ送信について解説します。
- HTMLファイルとCGIファイルを組み合わせてアンケートを作成する手順をご紹介します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
セッション管理の問題です。だいたい3つぐらい方法があります。 1) 隠しフォームを使う 2) クッキーを使う 3) クエリーを使う( 1)と技術的には同じ ) 1) の方法を説明すると form.cgiが出力するフォームにhidden状態なパーツを追加しておきます。 例えば <input type="hidden" name="next_page" value="enk02.html" /> などとします。 これでフォームを返したときに次に表示するページがわかります。 valueをその次に表示するページを出しておけば、順番に表示できます。 この例で言えば、next_pageがenk02.htmlという値を受け取ったら、 次の隠しフォームはex02.htmlにすればよいです。 リダイレクトといっているのは、form.cgiから別のURLに飛ばすということを言っています。 print "Location: http://xxx/enkxx01.html\n\n"; とするか、CGI.pmを使っているのなら use CGI; my $q = CGI->new(); print $q->redirect('http://xxx/enkxx01.html'); でもいいのでしょう。
その他の回答 (1)
- _--_1l1_1_
- ベストアンサー率67% (102/152)
ex??.html と enk??.html の表示と同じものを form.cgi で返せば? あるいはform.cgiでリダイレクトするとか
補足
ご回答大変ありがとうございます。 enk01.htmlからform.cgiを呼びだした場合、 form.cgiにex02.htmlの表示をさせることはできると思います。 そこで、ex02.htmlからenk02.htmlへは、ただのリンクなので良いですが、 enk02.htmlからform.cgiを呼びだした場合、 form.cgiには、ex02.htmlの表示が書かれていると思います。 この、enk01.htmlから呼びだされたか、enk02.htmlから呼び出されたかの 区別というのは、できるのでしょうか? あと、ここで言うリダイレクトと言うのは、何をファイル出力させるものなのでしょうか。 enk01.html表示 ↓ form.cgi呼びだし(enk01.html内容を外部ファイルに書き出し&ex02.htmlの出力) ↓ ex02.html表示 ↓単純なリンク処理 enk02.html表示 ↓ form.cgi呼びだし(enk02.html内容を外部ファイルに書き出し&ex02.htmlの出力) ↓ ex02.html表示 になってしまいました。
お礼
ご返答ありがとうございます。 無事、隠しフォームとリダイレクトで、目的を達成できました。 今回は、クッキーの使い方はわかりませんでしたが、 今後勉強していきたいと思います。 また、質問をすることが多々あると思いますが、 その時は、また返答していただけると嬉しいです。 今回は、丁寧なソースでの解説まで本当にありがとうございました。