我目前有以下代码,仅验证用户名长度。如果没有输入,则会显示错误消息,如果输入的少于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{}
}
?>
答案 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".
}