如果输入特殊字符,则无效

时间:2016-07-10 13:59:40

标签: php jquery character

我目前有以下代码,仅验证用户名长度。如果没有输入,则会显示错误消息,如果输入的少于3个字符显示错误消息。我想添加一个if/else语句,如果用户输入!@#$%^&*()+=/?等特殊字符...允许的唯一特殊字符是下划线(_)和hypen( - )...帮帮我

感谢

这是我的代码:

<?php
$serror="";
if (isset($_POST['submit'])) {              
    $username=$_POST['username'];
    $lengt = strlen($username);

    if($lengt == 0){
        $serror=" Please enter account username ";
    }
    else{
        if($lengt < 3 ){            
            $serror=" Please enter valid account username ";
        }
    }
    if($serror==""){
        ob_start();
        echo "Success";
        header("Location:progress.php?username=$username");
        exit;
        ob_end_flush();
    }
    else{}              
}
?>

3 个答案:

答案 0 :(得分:0)

使用preg_match() function

$yourString = "blahblah";
if (preg_match('/^[A-Za-z0-9_-]*$/', $yourString)) {
    #your string is good
} 

remeber preg_match()返回布尔值

答案 1 :(得分:0)

您的php脚本在用户提交表单后工作。从问题中的标签我假设你可以使用javascript。使用Javascript,您可以在提交表单之前捕获这些错误。

因此,您的html输入字段会触发一个脚本,您可以使用onkeypress事件来查看击键的值。

提交按钮还会有一个javascript事件来查找分钟string length,否则会提供warning而不会提交表单。

答案 2 :(得分:0)

正如其他人已经指出的那样,你应该使用正则表达式。

尝试使用以下if语句(允许a-z,数字,下划线和连字符)。它还会检查长度是否至少为3个字符:

if (!preg_match("/^([\w\-]{3,})$/", $username)) {
    $error = "Not enough chars or there are invalid ones".
}

详细了解preg_match() here