0

[^a-zA-Z@_.0-9\']さらなる機能のために受け入れられることだけを許可したいので、これを行いました。正常に動作していますが、挿入を実行しようとしたときにanything.php

ファイル名の検索を開始し、エラーで終了します。私はすでに不要な文字をエスケープしていますが、それでもエラーが発生しています!

多くのユーザーが使用しているため、ドット (.) をエスケープできません。

   $clean = htmlspecialchars(escapeshellcmd(($_GET["name"]),ENT_QUOTES);

    if ( !preg_match( '/[^a-zA-Z@_.0-9\']/', $clean))
     { 
     if(empty($clean)){

    echo "";

    }else{

//function

    }
}
4

1 に答える 1

0

文字列にこれらの文字のいずれかが含まれているかどうかを単純に尋ねているだけです。あなたが尋ねたいのは、それらの文字だけで完全に構成された文字列です。正規表現の両端を固定し、量指定子を追加する必要があります。

/^[^a-zA-Z@_.0-9\']*$/

^行頭に$マッチし、 は行末にマッチし、*は「0 以上」を表します。

于 2013-10-05T02:05:12.007 に答える