0

一度に 1 つの質問のみを個別のページに表示するアンケートを作成しようとしています。CGI ファイルでこれを実現する方法がわかりません。現在、すべてを 1 つのページにまとめていますが、ユーザーが「次へ」ボタンを押して新しい質問に移動できるようにしたいと考えています。これを Perl と HTML だけでやろうとしています。例えば:

use CGI qw(:standard);              # Include standard HTML and CGI functions
use CGI::Carp qw(fatalsToBrowser);          # Send error messages to browser

#
# Start by printing the content-type, the title of the web page and a heading.
#

print header, start_html("Hello"), h1("Hello");


if (param())    {               # If true, the form has already been filled out.

    $who  = param("myname");
    $cats  = param("cats");         # Extract the value passed from the form.
    if($cats == "Y"){
        print p("Hello, your name is $who, and you like cats"); 
    }
    else{
        print p("Hello, your name is $who, and you don't like cats");   # Print the name.
    }

}
else    {                   # Else, first time through so present form.

    print start_form();         
    print p("What's your name? ", textfield("myname"));
    print p("Do you like cats? Y for yes and N for no", textfield("cats"));
    print p(submit("Submit form"), reset("Clear form"));
    print end_form();
}

print end_html;

猫の質問を次のページに表示したい場合、送信ボタンを取り出して、次のように機能するボタンを配置する場合、ボタンを別のページにリンクする必要がありますか、それとも 1 つのスクリプトで実現できますか? つまり、複数の HTML ページを作成してリンクし、たった 1 つの CGI スクリプトで調査を実行できますか?

4

1 に答える 1

3

できますよ。問題は、次にどのページを表示するかを知るために、スクリプトがユーザーが送信したばかりのページを知る必要があることです。<input>ただし、それはあなたの s の中に隠されていることで簡単に達成できます<form>。このような非表示の入力は、テキスト入力、ドロップダウン ボックス、チェックボックスなどの通常の入力と同じように、ブラウザによって CGI スクリプトに送信されます。

サーバー側では、この隠し<input>s の名前と値は、通常のparam()メソッド呼び出しを介して利用できます。非表示の入力自体はhidden();で作成されます。利用可能なドキュメントを読んでください。

于 2012-12-10T08:09:49.060 に答える