我目前在下面有这个代码,它只验证用户名长度。如果未输入,则会显示错误消息,如果输入的字符少于 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{}
}
?>
使用preg_match() function
$yourString = "blahblah";
if (preg_match('/^[A-Za-z0-9_-]*$/', $yourString)) {
#your string is good
}
记住preg_match()
返回布尔值
您的 php 脚本在用户提交表单后工作。从问题中的标签中,我假设您可以使用javascript。使用Javascript,您可以在提交表单之前捕获这些错误。
因此,您的 html 输入字段将触发一个脚本,您可以使用 onkeypress 事件来查看击键的值。
提交按钮还将有一个javascript事件来查找最小字符串长度,否则给出警告而不是提交表单。
正如其他人已经指出的那样,您应该为此使用正则表达式。
尝试使用以下 if 语句(允许 a-z、数字、下划线和连字符)。它还检查长度是否至少为 3 个字符:
if (!preg_match("/^(['w'-]{3,})$/", $username)) {
$error = "Not enough chars or there are invalid ones".
}
在此处阅读有关 preg_match() 的更多信息