CGI-BBS > SO−HO > ショッピングバスケット > (特商版)で空欄チェック機能をカスタマイズしたい。


カレッヂ
カレッヂ


質問者 Ricky  投稿日 10/28(月) 14:25:55
簡易ショッピングバスケット(特商版)を改造して使用させて頂いております。
色々カスタマイズして正常に動作しているのですが申し込みフォームの空欄チェック機能
で例えば「半角英数8文字以内」などと指定しそれ以外を入力するとエラー表示が
(例 半角英数8文字以内で入力してくださいなどの)出るようにしたいのですがどう
したら良いのでしょうか?色々しらべてもこれだけが出来ません。
どなたか教えていただけないでしょうか?宜しくお願いします。

プロバイダ参照:
サーバのOS:UNIXサーバ
パソコンのOS:(未選択)
エディタ:yooEdit
FTPソフト:Fetch
サーバ移転:していない
改造:している 改造前正常動作
CGI習熟度:middle

回答者 しあわせのツボ  [削除]  投稿日 10/28(月) 15:13:13
半角英数以外のチェックは
$var =~ /\W/
で、文字数のチェックは
length $var
で可能です。
質問者 Ricky  [削除]  投稿日 10/28(月) 15:26:04
早速の回答ありがとうございます。
今、仕事が始まってしまったので後で試してみます。
また解らないことがあるかもしれませんので又ご指導下さい。
試してみましたらご連絡いたします。ありがとうございました。
質問者 Ricky  [削除]  投稿日 10/28(月) 16:55:22
難しいですね。
ファイルはcargo.cgiとwebform.cgiです。
手を加えるのはwebform.cgiだけで良いのでしょうか?
cargo.cgiの記入フォームは
print "<tr><th align=\"left\">希望ID</th>\n";
print "<td><input type=text name=\"f希望ID\" size=\"30\" style=\"ime-mode: active\">&nbsp;&nbsp;*(半角英数8文字)</td></tr>\n";

を追加しました。その後
webform.cgiで
#★ 空欄防止対策、及び購入者、届け先に敬称を追記
        if ($name =~ /^N/) { $num_n = $value; $name =~ s/^N//; $value .= "\x81\x40様" if $value ne ''; }
        if ($name =~ /^d/) { $num_d = $value; $name =~ s/^d//;}
        if ($name =~ /^f/) { $num_f = $value; $name =~ s/^f//;}
        elsif ($name =~ /^Z/) { $num_z = $value; $name =~ s/^Z//; }
        elsif ($name =~ /^A/) { $num_a = $value; $name =~ s/^A//; }
        elsif ($name =~ /^P/) { $num_p = $value; $name =~ s/^P//; }
        elsif ($name =~ /^C/) { $name =~ s/^C//; $value .= "\x81\x40様宛" if $value ne ''; }
でチェックして
#★ 空欄対策のアラート。domcheck.pl を使うなら下の # を取り、 if ($mailcheck && $email eq '') を # でコメントアウトする
if ($mailcheck && $email eq '') { &error('ご注文いただけません', '申\込者Eメールを入力しないと送信できません'); }
#&domcheck($email);
if ($num_n eq '') { &error('未入力があります','申\込者氏名が未記入です'); }
if ($num_z eq '') { &error('未入力があります','振り\込み名義人が未記入です'); }
if ($num_a eq '') { &error('未入力があります','振込予\定日が未記入です'); }
if ($num_p eq '') { &error('未入力があります','振込予\定時間が未記入です'); }
if ($num_f eq '') { &error('未入力があります','希望IDが未記入です'); }
if ($num_d eq '') { &error('未入力があります','今後のバージョン情報が未記入です'); }

で空欄検出し空欄があればエラーが出るようにしています。
この希望IDの部分を空欄及び半角英数8文字でチェックしたいのです。

すいません長々と書きまして、ご指導願えますでしょうか?
もう3日以上悩んでます。
回答者 しあわせのツボ  [削除]  投稿日 10/28(月) 18:17:58
そこに追加するだけです。
if ($num_f =~ /\W/) { &error('誤入力','希望IDは半角英数のみ'); }
if (length($num_f) > 8) { &error('誤入力','希望IDは8字まで'); }

ついでに言うと、半角英数を期待するフィールドは
ime-mode:inactiveにした方がいいですね。
質問者 Ricky  [削除]  投稿日 10/28(月) 18:47:34
解決しました(^^感謝です!!!
本当にありがとうございました。

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

Web裏技