カレッヂ |
質問者 masa
投稿日 1/19(金) 17:59:24
初めまして、ちょっと解らないことがありまして質問します。 内容は、ページ内の数字をクリックすると数字が1つ減ると言うCGIを作りたいのですが どのように作成したら良いか解らないのです。どなたか教えて下さい。 流れ的には、 数字をクリック→違うページに進む→元のページに移動する→数字が減っている(10ならば9に) です。説明が下手ですみませんが教えて頂けないでしょうか?宜しくお願いします。 |
回答者 さくら
[削除]
投稿日 2/4(日) 05:02:34
情報の牽引にはいくつかの手法が考えられますが、簡単に実装できる方法として QUERY_STRINGがあります。 例えば、下記のようなアドレスを作ります。 http://domein.com/cgi-bin/script.cgi?10 これで、script.cgi を呼び出すと、?の後の 10 が環境変数QUERY_STRINGに格納されます。 perl では、ENV{'QUERY_STRING'} でアクセスできます。 プログラム中では、このように使います。 $query = ENV{'QUERY_STRING'}; #$query に10が格納された! $query--; #$query をデクリメントした。(9になった) そしてHTMLを出力する中で <A HREF="http://domein.com/cgi-bin/script.cgi?$query"> これで情報を牽引できますね! この方法の場合userに返すページをcgiによってダイナミックに生成する必要があります。 質問の中に、違うページへ移動して又元のページへ戻ると有りましたが、 この場合も、ダイナミックにページを生成して、情報を牽引していく必要があります。 そうすると、違うページへ行く場合と、数字をデクリメントする場合と両方考えなければいけません。 一般的に良く使われているのはこんな風にします。 http://domein.com/cgi-bin/script.cgi?number=10&action=decrement このように呼び出します。action の属性を変えてjunp するか decrement するか動作を変えます。 ただこの場合、QUERY_STRING は url エンコードされて来るのでデコードが必要になります。 こんな感じでデコードします。 $query =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; 後は、& で split して = で split して ハッシュに格納するのがperl の定石のようになっています。 又、違うページに行くときに Location ヘッダを使って既存の静的ページに行く場合は uaer を識別する為の ユニークなファイル名を持ったデータファイルを生成する必要があります。 これは user を識別して ファイルを読み書きしたり、 user が離れた場合にそなえて、timeout 用のルーチンを書いて ファイルを削除したりしなければなりません。 ここまでやる事も無いと思いますが、一応こんな方法もあります。 こんな感じでお役に立つでしょうか? 貴方がどんなページをイメージしているか分かりませんが、 それほど難しいテクニックは必要無いので、是非、挑戦して下さい。 |
返信(回答)する
Web裏技 |