【问题标题】:Invalid if Special Character is entered如果输入特殊字符无效
【发布时间】:2016-07-10 13:59:40
【问题描述】:

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

谢谢

这是我的代码:

<?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{}              
}
?>

【问题讨论】:

  • 您可以使用正则表达式来检测不需要的字符或只允许允许的字符

标签: php jquery character


【解决方案1】:

使用preg_match() function

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

记住preg_match() 返回布尔值

【讨论】:

  • 应该可以。这种模式也应该有效:/^([\w\-]+)$/
【解决方案2】:

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

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

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

【讨论】:

  • 这是真的,但您也应该始终在后端进行验证。人是邪恶的,JS可以被操纵。
  • 非常非常真实。但由于他的标题使用GET 方法作为用户名,我认为安全不是首要任务。
  • 哦,快!我错过了那个!
【解决方案3】:

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

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

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

阅读更多关于preg_match() here

【讨论】:

  • @RachelGallen - 你注意到!前面的感叹号preg_match()了吗?
  • 如果一开始就找不到匹配项,那么它不会有任何影响! - 它说不匹配
  • 假设与您的字符串不匹配。它包含无效字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多