CGIの起動をフォームのサブミット以外からは起動させない方法はありますか?

[上に] [前に] [次に]
K3 [E-Mail] 1999/05/14(金) 14:22:12
CGIをフォームのサブミットボタンを選択した場合のみ起動させ、
直接キー入力した場合は起動させないようにする方法はありますか?
なお、CGIはPerlで作成してあります。

しなのむし 1999/05/14(金) 23:49:44
起動はしてしまいますが、別画面を表示させることは出来ます。
以下、フォームのデータ取得方法がPOSTの場合。

if ($ENV{'REQUEST_METHOD'} eq "POST")
{print "post";}
else
{print "else";}

K3 [E-Mail] 1999/05/17(月) 16:06:33
GETの場合はどうすればよいでしょうか?
POSTになおさないとだめですか?

旅人C 1999/05/18(火) 00:13:04
同じく
$ENV{'REQUEST_METHOD'} eq "GET"
で処理すればOKでしょう。

K3 [E-Mail] 1999/05/18(火) 00:26:34
直接キー入力した場合もGETになってしまうので、
その場合とFORMのGETの違いは、どうやって見分けたら
良いのでしょうか?

Aurai 1999/05/18(火) 00:39:24
HTTP_REFERERを参照してみてはどうでしょう

K3 1999/05/19(水) 20:21:05
使用しているサーバは、HTTP_REFERER をサポートしていないようです。

ウンジャマラミー 1999/05/24(月) 16:36:58
function aaa() {
    return false ;
}
function bbb() {
       :
    document.form.submit() ; ;
}
   :
<FORM NAME="dummy" onSubmit="return aaa()">
    <INPUT TYPE="BUTTON" onClick="bbb()">
      :
</FORM>

<FORM NAME="formname" METHOD="get" ACTION="XXX.cgi">
   :
</FORM>
この様にフォームを2つに分けたらどうでしょう?

K3 1999/05/27(木) 15:43:24
[[解決]]
解決しました。

というか、よく見たら似たような質問が他にもあり、
URLを直接、キー入力した場合は、HTTP_REFERERに値は
セットされないとあり、確認したら、確かにその通りでした。

今回、収集できた情報で、なんとか、対応できそうです。
ご回答いただいた皆様、ありがとうございました。


[上に] [前に] [次に]