CGI-BBS > CGI > Perl > URLの文字制限(半角英数字のみの入力制限)は?


カレッヂ
カレッヂ


質問者 香月由宜子  投稿日 5/29(水) 11:33:05
入力フォームにおいて
URLアドレスの間違いを防ぐために
cgiでURLアドレスに制限をかけようと思っているのですが
うまくいきません。

制限は半角英数字だけを記入するだけいいです。

よくメールアドレスの入力制限で@を入力しないとダメっていう風に
なっている下記のを流用しようとしているのですが、なにぶん初心者なもので、
命令の意味などがよくわからず、困っています。どなたかアドバイスいただけないで
しょうか?よろしくお願いいたします。

----メールアドレス部分のCGIはこんな感じです-----

        #貴社の情報-会社Emailの不要文字をチェック
        if ($name eq '貴社の情報-会社Email') {if($value ne ''){
        $commchk = $value;
        &jcode'convert(*commchk,'euc');
        #全角文字チェック
        if ($commchk =~ /[\xA1-\xFE][\xA1-\xFE]/) {&error(bad_email);}
        #半角カタカナの確認
        if ($commchk =~ /\x8E/) {&error(bad_email);}
        #メールアドレスで使用する文字か確認
        if ($commchk =~ /[\x00-\x2c]/){&error(bad_email);}
        if ($commchk =~ /[\x2f]/){&error(bad_email);}
        if ($commchk =~ /[\x3a-\x3f]/){&error(bad_email);}
        if ($commchk =~ /[\x5b-\x5e]/){&error(bad_email);}
        if ($commchk =~ /[\x60]/){&error(bad_email);}
        if ($commchk =~ /[\x7b-\x7d]/){&error(bad_email);}
        if ($commchk =~ /[\x7f]/){&error(bad_email);}
#メールアドレスで最低限使用する文字を確認
        if (index($commchk,'@',0) == -1 ){&error(bad_email);}
        if (index($commchk,'.',0) == -1 ){&error(bad_email);}
}}
回答者 しあわせのツボ  [削除]  投稿日 5/29(水) 13:03:38
どのように「うまくいかない」のですか?

入力デコード部分に組み込んでいるように見受けますが、デコードを終えてから改めてチェックするように変更してみるとどうでしょうか。
提示された部分は冗長ですが動くと思いますので、$nameにいわゆる全角文字を用いているのが問題のような気がします。

返信(回答)する


Web裏技