PHP名称验证
我一直在为注册表单创建一些验证,在验证用户名时遇到了一个错误 我对firstname和lastname都使用了一个输入“Test”,但当它应该允许输入时,我仍然得到一个错误,因为PHP名称验证,php,regex,validation,Php,Regex,Validation,我一直在为注册表单创建一些验证,在验证用户名时遇到了一个错误 我对firstname和lastname都使用了一个输入“Test”,但当它应该允许输入时,我仍然得到一个错误,因为 !preg_match('/^[a-z]*$/i',$value)应该同时允许小写和大写字符吗 另外,我得到的错误似乎只是触发名字,而不是姓氏 <?php if (isset($_POST['submit'])){ require_once 'config.php'; $
!preg_match('/^[a-z]*$/i',$value)
应该同时允许小写和大写字符吗
另外,我得到的错误似乎只是触发名字,而不是姓氏
<?php
if (isset($_POST['submit'])){
require_once 'config.php';
$errors = [];
foreach($_POST as $field => $value){
if($field === 'firstname' || $field === 'lastname' && !preg_match('/^[a-z]*$/i', $value)){
$errors[] = "{$field} has invalid characters please try again.";
echo $error;
}
}
}
?>
您的“或”状态缺少括号。“AND”优先于“OR” 注意:在上面的代码中,有一个“未定义变量”:
$error
我建议:
在_数组($key、['firstname'、'lastname'])
而不是两个单独的检查,使您的条件语句更直接/简短/干练!ctype_alpha($value)
array (
0 => 'lastname field contains invalid value: n0tl3g!t',
)
至于改进应用程序的用户体验,我建议在表单中使用HTML5验证,以防止提交无效字段值,例如
<input type="text" name="firstname" required pattern="[a-zA-Z]+" placeholder="letters only">
请发布html,这是错误的条件逻辑。在or子句周围加上()
array (
0 => 'lastname field contains invalid value: n0tl3g!t',
)
<input type="text" name="firstname" required pattern="[a-zA-Z]+" placeholder="letters only">