メッセージを検証する次のコードがあります。メッセージが有効でない場合でも、メッセージは渡され、true が返されます。
コード:
$message = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 \" ' ! & ( ) @ [ ] ? . : , ; - _";
if(isset($message) && strlen($message) > 10)
{
if (preg_match("/[a-zA-Z0-9 \"'!&()@[\]\?.:,;\-_]/u", $message))
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
現在のコードは true として渡されるはずです。すべての文字は有効ですが、メッセージを変更すると
$message = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 \" ' ! & ( ) @ [ ] ? . : , ; - _ >";
最後の文字で失敗するはずです。しかし、それは通過し、true を送信します。何かを見逃しているか、何かをエスケープしていない可能性があります。
最終的に、メッセージは HTML フォームを介して送信されます。
アップデート:
正規表現をに変更する
preg_match("/^[a-zA-Z0-9 \"'!&()@[]\?.:,;-_]+$/u", $メッセージ)
また
if (preg_match("/^[a-zA-Z0-9 \"'!&()@[\]\?.:,;\-_]*$/u", $message))
検証を修正しました。複数の文字が出現することを考慮していませんでした。