プロが教える店舗&オフィスのセキュリティ対策術

1ページだけに質問項目を作成して、次のページで入力項目の確認をするCGIは本を見ながらできました。

しかし、この質問を複数ページにわけて最終ページで確認表示させたいのです。
(理由は携帯用のページを考えているので、長い1ページにしたくないからです)

本には載っておらず、いろいろ過去の書き込みを検索しても見つかりません。
ご存知の方、よろしくお願いします。

A 回答 (4件)

1ページ目以外はCGIです。


1ページもCGIで可能ですし。

htmlファイルとして書き出す必要は特にありませんよ?
2ページ目で、ちょっと確認項目だしてますが、
しないのであれば、そのまま3ページ目という風に・・・

ページが進む度に、
<input type="hidden" name="name" value="$FORM{'name'}">

<input type="hidden" name="address" value="$FORM{'address'}">
と、増やしていけば、良いわけです。

なにかややこしくなってましたね、訂正します。

全てCGIとして書きなおすと、
if(!$FORM{'name'}){
print <<"END";
<form>
<input type="text" name="name"><br>
<input type="submit" value="送信">
</from>
END
}
elsif($FORM{'name'}){
print <<"END";
<form>
<input type="hidden" name="name" value="$FORM{'name']">
<input type="text" name="address"><br>
<input type="submit" value="送信">
</from>
END
}elsif(($FORM{'name'}&&($FORM{'address'})){
print<<"END";
<form>
<input type="hidden" name="name" value="$FORM{'name']">
<input type="hidden" name="address" value="$FORM{'address']">
<input type="radio" name="sex" value="men">男
<input type="radio" name="sex" value="women">女
<input type="submit" value="送信">
</from>
END
}elsif(($FORM{'name'})&&($FORM{'address'})&&($FORM{'sex'})){
print <<"END";
氏名:$FORM{'name'}<br>
住所:$FORM{'address'}<br>
性別:$FORM{'sex'}<br>
以上でよろしいですか?
<form>
<input type="hidden" name="name" value="$FORM{'name']">
<input type="hidden" name="address" value="$FORM{'address']">
<input type="hidden" name="sex" value="$FORM{'sex'}">
<input type="submit" value="OK">
</form>
END
}

別途decode等の指示は必要です。
簡単に書くとこういう処理になると思います。
    • good
    • 0
この回答へのお礼

度重なる質問にご回答いただきありがとうございます。
これを参考に是非やってみます。

ありがとうございました。m(__)m

お礼日時:2002/12/03 21:35

>この処理をさせようとすると、cgiページからcgiページを呼び出すようになるのでしょうか?(どうやって?)



前の方が仰る通りhiddenで可能ですね。
一度methodをgetでやってみると感覚がつかみやすいと思います。
別のCGIを呼び出すわけではなく、一つのCGIで可能です。


ただ、その為にはそれ用の処理が必要になります。
1ページ目
<form>
氏名:<input type="text" name="name"><br>
<input type="submit" value="送信">
</form>

処理
if(($FORM{'name'})&&(!$FORM{'check'})){
print <<"END";
<!--この内容が2ページ目-->
氏名:$FORM{'name'}<br>
これでよろしいですか?<br>
<form>
<input type="hidden" name="name" value="$FORM{'name'}">
<input type="hidden" name="check" value="name">
<input type="submit" value="OK">
</form>
END
}
elsif($FORM{'check'} eq "name"){
print <<"END";
<!--この内容が3ページ目-->
<form>
<input type="hidden" name="name" value="$FORM{'name'}">
<input type="hidden" name="check" value="address">
住所:<input type="text" name="address">
<input type="submit" value="送信">
</form>
END
}

あとは繰り返しですね。

この回答への補足

詳細な解説ありがとうございます。
ああ、それなのにすみません。
どの内容がhtmlファイルに書き出し、どの内容がcgiファイルに書き出すものなのか分からなくて困惑しております。

できれば、上記の補足解説をお願いします。

補足日時:2002/12/03 14:36
    • good
    • 0

#1です。



>すみません
><INPUT TYPE="hidden" の使い方がイマイチわからないのですが、、、
>(本を見ると隠しボタンの設置に利用とあります)

隠し要素ですが、ボタンではありません。
ページになにも表示せずに、こっそりデータの受け渡しをするものです。

>実際、最終ページにはどうやってデータを渡すのでしょう?
>あと、アンケートの入力項目には氏名欄(text)もあるのですけど、これも最終ページに渡せますか?

受け取ったデータが、%FORMという連想配列に格納されているとすると、

<FORM ACTION="http://localhost/perl/test.cgi" METHOD="POST">
<INPUT TYPE="hidden" NAME="Q1" VALUE="$FORM{'Q1'}">
<INPUT TYPE="text" NAME="name">
<INPUT TYPE="submit" VLAUE="送信">
</FORM>

で、Q1の内容と今回入力されるnameの内容をtest.cgiに送信する事ができます。
内容確認の時は、

Q1:$FORM{'Q1'}

等として、中身を表示させれば良いと思いますよ。

この回答への補足

脱線してきてます?
ちょっと、まとめます。

1ページ目・・・氏名の入力(text) submit ⇒※確認ページが表示されてしまう
2ページ目・・・住所の入力(text) submit ⇒※確認ページが表示されてしまう
3ページ目・・・性別の選択(radioもしくはoption) submit

4ページ目・・・1~3ページの確認一覧表示としたい。

途中で確認ページを表示させず、尚且つ最終ページでのみ確認一覧を出したいのです。
現状、1ページ目⇒確認ページで止まってしまっています。
この処理をさせようとすると、cgiページからcgiページを呼び出すようになるのでしょうか?(どうやって?)
まと外れの質問になっているのかもしれませんが、解釈が間違っていたら訂正お願いします。

補足日時:2002/12/03 11:37
    • good
    • 0

それまでの回答を


 <INPUT TYPE="hidden" NAME="Q1" VALUE="はい">
 <INPUT TYPE="hidden" NAME="Q2" VALUE="いいえ">
のようにhiddenで全て持たせてはどうでしょう?
そうすれば最終ページまで内容を保持できますよ。
それを最終ページで表示すれば、hhayato10さんのご希望通りの動作をすると思います。

この回答への補足

すみません
<INPUT TYPE="hidden" の使い方がイマイチわからないのですが、、、
(本を見ると隠しボタンの設置に利用とあります)

実際、最終ページにはどうやってデータを渡すのでしょう?
現在は<FORM ACTION="http://localhost/perl/test.cgi" METHOD="POST">
で渡しているので、次のページで項目確認になってしまいます。
あと、アンケートの入力項目には氏名欄(text)もあるのですけど、これも最終ページに渡せますか?

補足日時:2002/12/03 10:48
    • good
    • 0

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