AN HTTPD ゲストブック/コメント集(2001年1月23日11:35)


こにゃんこ konyanko@thn.ne.jp 2001/01/24 07:42

中田さんありがとうございます。

まだまだ勉強不足でした。
.plはどれでも動くものだと思ってました。
その後順調に作動するようになりました。

ありがとうございました。


中田昭雄 nakata@st.rim.or.jp 2001/01/23 21:04

こにゃんこさん、
ReadParse は普通 cgi-lib.pl で定義されているサブルーチンだと思います。


こにゃんこ konyanko@thn.ne.jp 2001/01/23 17:57

たびたびすみません。
下の投稿のエラーは何とか原因がわかったのですが、
今度は↓原因がわかりません。
どなたか教えてください。

Error 500
CGI エラー - Content-Type ヘッダが正しくありません。
CGI 出力メッセージ:

Undefined subroutine &main::ReadParse called at C:\Windows\デスクトップ\www\k&m\public_html\cgi-bin\useradd.cgi line 5. 

ちなみにcgiは↓になってます。

#!/usr/local/bin/perl

require './jcode.pl';

&ReadParse(*in);
$filename = "./password";

$user = $in{'name'};
$passwd = $in{'passwd'};
$flag = 0;

if($user eq ""){
&firstvisit;
}else{
open(FILE, $filename);
@allbody = <FILE>;
foreach $line (@allbody){
($name, $pass) = split(/:/,$line);
if($name eq $user){
$flag = 1;
}
}
close(FILE);

if($flag eq 1){
&userexist;
} else {
&createuser;
}
}

sub firstvisit{
print "Content-type: text/html\n\n";

print "<HTML><TITLE>ユーザ登録</TITLE><BODY>";
print "パスワードを入力してください";
print "<FORM method=\"post\" action=\"useradd.cgi\">";
print "Name<INPUT type=\"text\" name=\"name\" size=30>
";
print "Passwd<INPUT type=\"password\" name=\"passwd\" size=30>
";
print "INPUT type=\"submit\" value=\"登録\">";
print "INPUT type=\"reset\" value=\"クリア\">";
print "</FORM></BODY>";
print "</HTML>";

}
sub userexist{
print "Content-type: text/html\n\n";

print "<HTML>";
print "入力したIDはすでに登録されてます。
別なIDを登録してください。";
print "<FORM method=\"post\" action=\"./useradd.cgi\">";
print "Name<INPUT type=\"text\" name=\"name\" size=30>
";
print "Passwd<INPUT type=\"password\" name=\"passwd\"size=30>
";
print "INPUT type=\"submit\" value=\"登録\">";
print "INPUT type=\"reset\" value=\"クリア\">";
print "</FORM>";
print "</HTML>";

}

sub createuser{
$crypted = crypt($passwd, $user);
open(FILE, ">>$filename");
print FILE "$user:$crypted\n";
close(FILE);

print "Content-type: text/html\n\n";
print "<HTML>";
print "登録しました。";
print "</HTML>";
}

exit;


こにゃんこ konyanko@thn.ne.jp 2001/01/23 11:35

中田さんお久しぶりです。
前回自宅サーバ設立を断念したこにゃんこです。

今回はCGIの使えるスペースを借りたくてまた挑戦中なのですが、

Unrecognized character \x81 at C:\Windows\デスクトップ\www\k&m\public_html\cgi-bin\useradd.cgi line 17 

というエラーが出てしまいます。
で、line 17前後には

if($user eq ""){
&firstvisit;
}else{
open(FILE, $filename);
@allbody = <FILE>;
#!ここが↓17行目です。
  foreach $line (@allbody){
($name, $pass) = split(/:/,$line);
if($name eq $user){
$flag = 1;
}
}
をいれています。
どうか無知な私を助けてください。
よろしくお願いします。


 CGIでは " " で囲まれた以外のところでは全角文字は使えません。もしあると「Unrecognized character \x81」あるいは「Unrecognized character \201」が出ます。特に「全角空白」は見逃してしまうので注意が必要です。(いと)