![]() |
カレッヂ |
質問者 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/</</g; $value =~ s/>/>/g; $value =~ s/\n//g; $CORRECT{$_} = $value; } を foreach (1..11) { ($name,$value) = split(/=/,$lines[$_]); ★←このように★ $value =~ s/</</g; $value =~ s/>/>/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裏技 |