如何在用户点击提交时显示所有错误。例如,我有这段代码:
if(strlen($username) < 5){ echo "Show error message"; }
if($password != $passwordRetype){ echo "Show error message"; }
if(strlen($password) < 8){ echo "Show error message"; }
如何在一段时间内显示所有错误消息?现在它显示,第一个错误,如果这是第二个修复,第二个修复后。有没有办法做到这一点?
答案 0 :(得分:0)
您可以使用列表/数组来跟踪发生的所有错误,然后在这个非常简单的演示中将它们呈现给用户。
$errors = []; // Array creation
if (strlen($username) < 5) {
// Add this error to our list
$errors[] = 'Username not valid.';
}
if ($password != $passwordRetype) {
// Add this error to our list
$errors[] = 'Password does not match our records.';
}
// Repeat this process for other errors
// Then handle your list of errors
foreach ($errors as $error) {
echo "Error Found: $error<br>";
}
答案 1 :(得分:0)
做点什么
$error = false ;
$msg = '';
if(strlen($username) < 5){ $msg .= "Show error message<br />"; $error = true ;}
if($password != $passwordRetype)){ $msg .= "Show error message<br />"; $error = true ;}
if(strlen($password) < 8){ $msg .="Show error message<br />"; $error = true ;}
if($error === true){
echo $msg ;
}
答案 2 :(得分:0)
更新以显示<form>
标记并使用jQuery提交表单。
真的,你应该在javascript / jQuery而不是PHP中进行这个字段测试。当它到达PHP端时,如果某些内容验证失败并且您需要返回,则屏幕将刷新,您必须存储/替换值,否则已输入的字段值将丢失。
使用javascript / jQuery,您可以在重定向之前停止验证并保留字段值并节省一些工作。
这是一个简单的例子:
<强> HTML:强>
<form id="myForm" action="some_file.php" method="post">
One: <input type="text" id="f1"><br />
Two: <input type="text" id="f2"><br />
Three: <input type="text" id="f3"><br />
Four: <input type="text" id="f4"><br />
</form>
<br />
<input type="button" id="mybutt" value="Go" />
<强>的JavaScript / jQuery的强>
<script type="text/javascript">
$(function() {
var chkFld, arrAll = {'One':'f1','Two':'f2','Three':'f3','Four':'f4'};
$('#mybutt').click(function() {
var errMsg='', badFlds='', firstBad='';
for(var key in arrAll){
chkFld = arrAll[key];
if ($('#'+chkFld).val() ==''){
//alert('Please complete field ' + arrAll[key] );
errMsg += '*' + chkFld + '\n';
if (firstBad=='') firstBad=chkFld;
}
}
if (errMsg != '') {
alert(errMsg);
$('#'+firstBad).focus();
return false;
}
$('#myForm').submit();
}); //END mybutt.click
}); //END document.ready
</script>
注意:
没有必要使用type =“submit”的按钮。使用jQuery提交表单非常有效。
如果表单验证失败,请使用return false;
停止此时的处理并将控制权交还给用户。
如果表单通过验证,请使用$('#formID').submit();
提交表单
确保您的action=
和method=
属性(表单标记)正确无误。
另请注意,上面的示例使用jQuery。确保在文档中包含jQuery库,通常在head标记之间,因此:
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
答案 3 :(得分:0)
就个人而言,我总是向用户显示错误的基本原理是:
$email = $_POST['email'];
$address = $_POST['address'];
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$_SESSION['errors'][] = 'Email was invalid';
}
if($address == '') {
$_SESSION['errors'][] = 'Address was invalid';
}
if(isset($_SESSION['errors'])) {
header("Location: " . $_SERVER['PHP_SELF']);
exit();
} else {
//everything okay, do other stuff like send mail or save to database
}
然后,在页面本身上,我使用一个列表:
if(isset($_SESSION['errors'])) {
echo '<ul>';
foreach($_SESSION['errors'] as $err) {
echo '<li>' . $err . '</li>';
}
echo '</ul>';
unset($_SESSION['errors']); //show them just once
}
这样用户就无法重新发布已经通过点击F5提交的数据,他们也不会得到一个丑陋的网址,例如?post = success。