CGI-BBS > 基礎 > その他 > ホームページアドレス(URL)を表示したい。


カレッヂ
カレッヂ


質問者 naka  投稿日 2006/1/16(月) 09:47:06
簡易型カード式データベース(WebCard)

記入項目にホームページアドレスを記入したく試行錯誤しております。

http

だけ表示されますがそれ以下が表示されません。


[regist.cgi]

require './jcode.pl'; # 日本語コード変換ライブラリ(v2.0以上)追加


foreach $pair (@pairs) {

	($name, $value) = split(/=/, $pair);
	$value =~ tr/+/ /;
	$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	&jcode'h2z_sjis(*value);
	&jcode'convert(*value,'sjis');
	$FORM{$name} = $value;
}


お知恵を拝借できればと存じます。

【習熟度】多少の設置経験

回答者 yue  [削除]  投稿日 2006/1/16(月) 20:15:41
こんばんわ。確かにプログラム上表示されない設定なっていますね。
もし、すでにデータ登録されていた場合はすべてデータを更新しないと
いけなくなるのですが、下記の方法でHPアドレスは表示されるようになります。

カスタマイズしていない状態での行数で表示させていただきますが、
まず「correct.cgi」の

34行目

	if (!open(IN,"$basedir$FORM{'SIGN'}")) { &error("ファイルが開けません"); }
	@lines = <IN>;
	close(IN);
	$lines[0] =~ s/\n//g;
	($line,$encode_pwd) = split(/\:/,$lines[0],2);  ★←この行を★
	if ($line ne 'PASSWORD') { &error("データ異常","パスワードが登録されていません"); }
	if ($encode_pwd =~ /^\$1\$/) { $salt = 3; } else { $salt = 0; }
	if (crypt($FORM{'PASSWORD'}, substr($encode_pwd,$salt,2)) ne $encode_pwd) { &error("パスワードが合いません"); }
}

を

	if (!open(IN,"$basedir$FORM{'SIGN'}")) { &error("ファイルが開けません"); }
	@lines = <IN>;
	close(IN);
	$lines[0] =~ s/\n//g;
	($line,$encode_pwd) = split(/=/,$lines[0],2);  ★←このように★
	if ($line ne 'PASSWORD') { &error("データ異常","パスワードが登録されていません"); }
	if ($encode_pwd =~ /^\$1\$/) { $salt = 3; } else { $salt = 0; }
	if (crypt($FORM{'PASSWORD'}, substr($encode_pwd,$salt,2)) ne $encode_pwd) { &error("パスワードが合いません"); }
}

53行目

foreach (1..11) {

	($name,$value) = split(/\:/,$lines[$_]);  ★←この行を★
	$value =~ s/&lt;/</g;
	$value =~ s/&gt;/>/g;
	$value =~ s/\n//g;
	$CORRECT{$_} = $value;
}

を

foreach (1..11) {

	($name,$value) = split(/=/,$lines[$_]);  ★←このように★
	$value =~ s/&lt;/</g;
	$value =~ s/&gt;/>/g;
	$value =~ s/\n//g;
	$CORRECT{$_} = $value;
}

次、regist.cgiの

75行目

if (-e "$basedir$FORM{'SIGN'}") {

	if (!open(IN,"$basedir$FORM{'SIGN'}")) { &error("ファイルが開けません"); }
	@lines = <IN>;
	close(IN);
	chop($lines[0]) if $lines[0] =~ /\n$/;
	($line,$encode_pwd) = split(/\:/,$lines[0],2);  ★←この行を★
	if ($line ne 'PASSWORD') { &error("データ異常","パスワードが登録されていません"); }
	if ($encode_pwd =~ /^\$1\$/) { $salt = 3; } else { $salt = 0; }
	if (crypt($FORM{'PASSWORD_1'}, substr($encode_pwd,$salt,2)) ne $encode_pwd) { &error("パスワードが合いません"); }
	$yet = '修正';
}

を

if (-e "$basedir$FORM{'SIGN'}") {

	if (!open(IN,"$basedir$FORM{'SIGN'}")) { &error("ファイルが開けません"); }
	@lines = <IN>;
	close(IN);
	chop($lines[0]) if $lines[0] =~ /\n$/;
	($line,$encode_pwd) = split(/=/,$lines[0],2);  ★←このように★
	if ($line ne 'PASSWORD') { &error("データ異常","パスワードが登録されていません"); }
	if ($encode_pwd =~ /^\$1\$/) { $salt = 3; } else { $salt = 0; }
	if (crypt($FORM{'PASSWORD_1'}, substr($encode_pwd,$salt,2)) ne $encode_pwd) { &error("パスワードが合いません"); }
	$yet = '修正';
}

90行目
print OUT "PASSWORD\:$pwd\n";
print OUT "ID\:$FORM{'SIGN'}\n";
print OUT "名前\:$FORM{'NAME'}\n";
print OUT "読み\:$FORM{'YOMI'}\n";
print OUT "性別\:$FORM{'SEX'}\n";
print OUT "EMAIL\:$FORM{'EMAIL'}\n";
print OUT "郵便番号\:$FORM{'ZIP'}\n";
print OUT "住所1\:$FORM{'ADDRESS1'}\n";
print OUT "住所2\:$FORM{'ADDRESS2'}\n";
print OUT "TEL\:$FORM{'TEL'}\n";
print OUT "備考1\:$FORM{'REM1'}\n";
print OUT "備考2\:$FORM{'REM2'}\n";
print OUT "登録日\:$date_now\n";

すべて
print OUT "PASSWORD\=$pwd\n";
print OUT "ID\=$FORM{'SIGN'}\n";
print OUT "名前\=$FORM{'NAME'}\n";
print OUT "読み\=$FORM{'YOMI'}\n";
print OUT "性別\=$FORM{'SEX'}\n";
print OUT "EMAIL\=$FORM{'EMAIL'}\n";
print OUT "郵便番号\=$FORM{'ZIP'}\n";
print OUT "住所1\=$FORM{'ADDRESS1'}\n";
print OUT "住所2\=$FORM{'ADDRESS2'}\n";
print OUT "TEL\=$FORM{'TEL'}\n";
print OUT "備考1\=$FORM{'REM1'}\n";
print OUT "備考2\=$FORM{'REM2'}\n";
print OUT "登録日\=$date_now\n";

に変更してください。
これで表示されるはずです。
質問者 naka  [削除]  投稿日 2006/1/16(月) 21:43:51
yueさま

ご親切にご教授ありがとうございました。

無事「項目欄」にアドレスが表示されるようになりました。

このページは終了したので返信(回答)は書きこめません
 


Web裏技