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

下記はjavaScriptで書いたものですが、javaScriptが有効になっていないと機能しないので
perlで同じことをやりたいのですが、フォームのvalueを変更する方法とinnerHTMLの様なボタンをクリックするとテキストを変更する方法が分かりません。
ヒントでも良いので教えていただけませんか?

<HTML>
<HEAD><SCRIPT language="JavaScript">
<!--
function nextA(){
var data = document.formA.data.value;
data++;
document.formA.data.value = data;
}
//-->
function nextB(){
var data = document.formB.data.value;
data++;
document.formB.data.value = data;
document.getElementById("print").innerHTML = data;
}
//-->
</SCRIPT>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</HEAD>
<BODY>
<FORM name="formA">
<input name="data" value="1">
<INPUT type="button" value="足す" onclick="nextA()">
</FORM>
<FORM name="formB">
<SPAN id="print">1</SPAN>
<INPUT type="button" value="足す" onclick="nextB()">
<INPUT type="hidden" name="data" value="1" >
</FORM>

</BODY>
</HTML>

A 回答 (1件)

こんにちは。



Perlで書いてCGIとして動かしたいという事でしょうか?

スマートじゃない気もしますが一応、こんな感じではどうですか。

■test.cgi(この下の # から HEOF までファイルに書く)
#!/usr/bin/perl
#上はPerlへのパス


#初期値
$num1 = 1;
$num2 = 1;


#リクエスト確認
if ($ENV{'REQUEST_METHOD'} eq "POST")
{
if ($ENV{'CONTENT_LENGTH'} > 51200) {}
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} elsif ($ENV{'REQUEST_METHOD'} eq "GET") {
$buffer = $ENV{'QUERY_STRING'};
}


#デコード実行
if ($buffer ne "") {
@pairs = split(/&/,$buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
}


#インクリメント
if ($FORM{'data1'} ne "") {$num1 = $FORM{'data1'};}
if ($FORM{'data2'} ne "") {$num2 = $FORM{'data2'};}
if ($FORM{'button1'} eq "足す") {
$num1 = $FORM{'data1'} + 1;
} elsif ($FORM{'button2'} eq "足す") {
$num2 = $FORM{'data2'} + 1;
}


#HTMLを出力
print "Content-type: text/html\n\n";
print <<"HEOF";
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>

<body>

<form action="test.cgi" method="post">
<input type="text" name="data1" value="$num1"><input type="submit" name="button1" value="足す">
<br>
$num2
<input type="hidden" name="data2" value="$num2"><input type="submit" name="button2" value="足す">
</form>

</body>
</html>
HEOF
    • good
    • 0
この回答へのお礼

GX71さん、回答ありがとうございます。
if ($FORM{'button1'} eq "足す") で条件分岐させるところと<input type="text" name="data1" value="$num1">のnameをバッファとして使ってるところがとっても参考になりました。

お礼日時:2004/12/31 20:35

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