[Netscape Communicator 4.7]×[FORMタグ]の組み合わせ続き
先に投稿した質問内容に利用規約違反してしまっている部分があったので、修正・追加したものを再度投稿します。
htmlファイル(特に関係無さそうな部分省略)
<form name="form1" method="post" action="送り先CGI">
<input type="password" name="pasu1" size="10">
<input type="password" name="pasu2" size="10">
<input type="password" name="pasu3" size="10">
<input type="submit" name="sabu" value="nn4win">
</form>
CGIファイル(特に関係無さそうな部分省略)
#!/usr/bin/perl
$title = 'フォーム内容表示';
$jcodelib = './jcode.pl';
$kanjicode = 'euc';
require "$jcodelib";
&init_form($kanjicode);
$pasu1 = $form{'pasu1'};
$pasu2 = $form{'pasu2'};
$pasu3 = $form{'pasu3'};
$sabu = $form{'sabu'};
&error;
exit();
sub init_form {
local($query, @assocarray, $assoc, $property, $value, $charcode, $method);
$charcode = $_[0];
$method = $ENV{'REQUEST_METHOD'};
$method =~ tr/A-Z/a-z/;
if ($method eq 'post') {
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
} else {
$query = $ENV{'QUERY_STRING'};
}
@assocarray = split(/&/, $query);
foreach $assoc (@assocarray) {
($property, $value) = split(/=/, $assoc);
$value =~ tr/+/ /;
$value =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("C", hex($1))/eg;
&jcode'convert(*value, $charcode);
$form{$property} = $value;
}
}
sub error {
print <<__END__;
content-type:text/html
<html>
<head>
<title>$title</title>
$contenttype
</head>
<body bgcolor="#FFFFFF" text="#000000">
$pasu1<br>
$pasu2<br>
$pasu3<br>
$sabu<br>
</body>
</html>
__END__
exit();
}
お礼
ありがとうございました。ご回答がヒントになり、他の質問を しらみつぶしに読んでいきましたところ、 $pass = substr($pass,17,$len);に出会いました。 問題は解決しました。
補足
どうも私には難しすぎるようです。このデコードというのをそのまま コピーすればよいのでしょうか?フォームメソッドはPOSTでなく ても、1234が返ってきさえすれば問題ないのですが。 $len = $ENV{'CONTENT_LENGTH'}; $len = $len - 17; $pass = right($pass,$len); print $pass; とやってみたら、 …&mode::right…というようなエラーメッセージがでました。