首先,我会展示我所拥有的,然后我会解释:
if(isset($_POST['submitRegister'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
$email = $_POST['email'];
if(!isset($username) || empty($username))
$error1 = 'Please enter your Username';
if(!isset($password) || empty($password))
$error2 = 'Please enter your Password';
if(!isset($password2) || empty($password2))
$error3 = 'Please confirm your Password';
if(!isset($email) || empty($email))
$error4 = 'Please enter your E-mail address';
if(!isset($_POST["terms"]))
$error5 = 'You must accept the Terms and Conditions';
这很好用。如果我在没有输入任何条目的情况下提交表格,则错误将显示在各自的字段下方。
在我读过的所有内容中,他们说,如果该字段不包含“任何”打印错误,则祝贺您的表单已提交。
但是,我想更进一步。
例如:如果字段已设置且不为空,则检查它是否包含正确的字符I.e:
if (!preg_match('#^[a-zA-Z0-9_-]+$#', $username))
$error1 = 'Username can only contain: A-Z a-z 0-9 _ -;
这也有效,除了我接下来的任何内容,总是会覆盖之前的错误。 换句话说,如果我要在没有在任何字段中输入任何内容的情况下再次提交表单,则用户名字段将收到第二个错误,而其余字段将收到第一个错误。 在此之后,我想检查它是否是正确的长度I.e:
if(strlen($username) < 6)
$error1 = 'Username must have more than 6 characters';
同样,这将覆盖第一个错误,因为没有字符也小于6。
我知道我可以一次性做到这一点,但这不是我想要的。 我已经尝试过把它放在if else语句和各种各样的语句中,但是我无法让它工作。
希望有人可以提供帮助,非常感谢。
哇,这个网站很棒!我只去厕所喂猫! 谢谢大家的答案,如果我有任何问题,我会调查他们并回来。 我只是想补充一点,我已经尝试过$ error []等但是无法让它工作。认为它可能与此有关:$smarty->assign('error',$error);
$smarty->assign('message',$message);
$smarty->display('register.tpl');
我正在使用Smarty作为模板系统。我宁愿没有,但我跟随的啧啧使用了它,我不知道如何在没有它的情况下显示我的.tpl,虽然我还没有看过这个。
再次,非常感谢!
答案 0 :(得分:1)
您可以使用点连接字符串:
$error1='';
if(!isset($username) || empty($username))
$error1 = 'Please enter your Username';
if (!preg_match('#^[a-zA-Z0-9_-]+$#', $username))
$error1 = $error1.'Username can only contain: A-Z a-z 0-9 _ - ';
修改强>
根据你的评论我推断,这可能是你想要的:
if (!preg_match('#^[a-zA-Z0-9_-]+$#', $username))
$error1 = 'Username can only contain: A-Z a-z 0-9 _ -';
if(strlen($username) < 6)
$error1 = 'Username must have more than 6 characters';
if(!isset($username) || empty($username))
$error1 = 'Please enter your Username';
这只显示一个错误。如果您将该字段留空,则为&#34;请输入您的用户名&#34;,如果您输入少于6个字符的内容,则为&#34;用户名必须超过6个字符&#34;最后,如果你输入超过6个字符,但用户名包含奇怪的东西,它将是&#34;用户名只能包含:A-Z a-z 0-9 _ - &#34;
我希望这会有所帮助。
答案 1 :(得分:0)
您可以将错误存储在数组中,如下所示:
$errorList = [
'username' => [],
'password' => [],
// ...
];
if (!preg_match('#^[a-zA-Z0-9_-]+$#', $username))
array_push($errorList['username'], 'Username can only contain: A-Z a-z 0-9 _ - ');
if(strlen($username) < 6)
array_push($errorList['username'], 'Username must have more than 6 characters');
显示:
if ($errorList['username']) {
foreach ($errorList['username'] as $error) {
echo $error . "<br/">
}
}
答案 2 :(得分:0)
我认为你可以为每组变量检查创建一个错误数组,例如
if(!isset($username) || empty($username))
$error1[] = 'Please enter your Username';
if (!preg_match('#^[a-zA-Z0-9_-]+$#', $username))
$error1[] = 'Username can only contain: A-Z a-z 0-9 _ - ';
if(strlen($username) < 6)
$error1[] = 'Username must have more than 6 characters';
现在,您的$error1
数组中发现了所有错误