Php 验证时显示错误
我使用的是引导。。我需要一次显示1个错误。下面的代码在不同的行中发布错误,它会占用整个页面 如果第一个字段中存在问题,则只在继续下一个字段之前过帐该错误,而不是一次过帐所有字段Php 验证时显示错误,php,mysqli,twitter-bootstrap-3,Php,Mysqli,Twitter Bootstrap 3,我使用的是引导。。我需要一次显示1个错误。下面的代码在不同的行中发布错误,它会占用整个页面 如果第一个字段中存在问题,则只在继续下一个字段之前过帐该错误,而不是一次过帐所有字段 function validate_registration(){ $errors = []; if ($_SERVER['REQUEST_METHOD'] == "POST") { $email = clean($_POST['email']);
function validate_registration(){
$errors = [];
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$email = clean($_POST['email']);
$user_name = clean($_POST['user_name']);
$birthdate = clean($_POST['birthdate']);
$country = clean($_POST['country']);
$password = clean($_POST['password']);
$confirm_password = clean($_POST['confirm_password']);
if (empty($email)) {
$errors[] = "Email Address Required.";
}
if (email_exists($email)) {
$errors[] = "Email Address in use.";
}
if (empty($user_name)) {
$errors[] = "Username Required.";
}
if (strlen($user_name) < $min) {
$errors[] = "Username is to short.";
}
if (user_exists($user_name)) {
$errors[] = "Username Taken.";
}
if (empty($birthdate)) {
$errors[] = "Birthdate Required.";
}
if (empty($country)) {
$errors[] = "Country Required.";
}
if (empty($password)) {
$errors[] = "Password Required.";
}
if ($password !== $confirm_password) {
$errors[] = "Your password fields do not match";
}
if (! empty($errors)) {
foreach ($errors as $error) {
echo validation_errors($error);
}
} else {
if (register_user($email, $user_name, $birthdate, $country, $password)) {
set_message('<div class="alert alert-success alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
Please check your email for account Information.</div>');
redirect("../account/login.php");
}
}
}
}
函数验证\注册(){
$errors=[];
如果($\u服务器['REQUEST\u METHOD']==“POST”){
$email=clean($_POST['email']);
$user\u name=clean($\u POST['user\u name']);
$birthdate=干净($_POST['birthdate']);
$country=clean($_POST['country']);
$password=clean($_POST['password']);
$confirm_password=clean($_POST['confirm_password']);
如果(空($email)){
$errors[]=“需要电子邮件地址。”;
}
如果(email_存在($email)){
$errors[]=“正在使用的电子邮件地址。”;
}
if(空($user_name)){
$errors[]=“需要用户名。”;
}
if(strlen($user_name)<$min){
$errors[]=“用户名太短。”;
}
如果(user_存在($user_name)){
$errors[]=“已获取用户名。”;
}
如果(空($birthdate)){
$errors[]=“需要生日。”;
}
如果(空($国家)){
$errors[]=“需要国家/地区。”;
}
if(空($password)){
$errors[]=“需要密码。”;
}
如果($password!=$confirm_password){
$errors[]=“您的密码字段不匹配”;
}
如果(!empty($errors)){
foreach($errors作为$error){
回波验证错误($error);
}
}否则{
if(注册用户($email、$user\u name、$birthdate、$country、$password)){
设置消息('
&时代;
请查看您的电子邮件以了解帐户信息。“);
重定向(“../account/login.php”);
}
}
}
}
更新:
根据您的意见,如果您希望一次打印一个错误,则需要使用ELSEIF而不是if like:
if (empty($email)) {
$errors[] = "Email Address Required.";
}
elseif (email_exists($email)) {
$errors[] = "Email Address in use.";
}
...
您也可以通过保留现有代码来实现这一点 只需替换此代码:-
if (!empty($errors)) {
echo validation_errors($errors[0]);
}
您还可以通过if-else-if
方式获得相同的功能。将$error声明为字符串
$error = '';
if(empty($email)) {
$error = "Email Address Required.";
}
else if (email_exists($email)) {
$error = "Email Address in use.";
}
else if (empty($user_name)) {
$error = "Username Required.";
}
else if (strlen($user_name) < $min) {
$error = "Username is to short.";
}
else if (user_exists($user_name)) {
$error = "Username Taken.";
}
else if (empty($birthdate)) {
$error = "Birthdate Required.";
}
else if (empty($country)) {
$error = "Country Required.";
}
else if (empty($password)) {
$error = "Password Required.";
}
else if ($password !== $confirm_password) {
$error = "Your password fields do not match";
}
if (!empty($error)) {
echo validation_errors($error);
} else {
if (register_user($email, $user_name, $birthdate, $country, $password)) {
set_message('<div class="alert alert-success alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
Please check your email for account Information.</div>');
redirect("../account/login.php");
}
}
$error='';
如果(空($email)){
$error=“需要电子邮件地址。”;
}
else if(电子邮件_存在($email)){
$error=“正在使用的电子邮件地址。”;
}
else if(空($user_name)){
$error=“需要用户名。”;
}
else if(strlen($user_name)<$min){
$error=“用户名太短。”;
}
else if(user_存在($user_name)){
$error=“已获取用户名。”;
}
else if(空($birthdate)){
$error=“需要生日。”;
}
else if(空($country)){
$error=“国家/地区必填。”;
}
else if(空($password)){
$error=“需要密码。”;
}
如果($password!=$confirm_password){
$error=“您的密码字段不匹配”;
}
如果(!empty($error)){
回波验证错误($error);
}否则{
if(注册用户($email、$user\u name、$birthdate、$country、$password)){
设置消息('
&时代;
请查看您的电子邮件以了解帐户信息。“);
重定向(“../account/login.php”);
}
}
要进行引导验证,请访问以下站点:-
希望它能帮助您:)为什么不使用jquery验证进行客户端验证 然后也使用服务器端验证,但将其显示为全部 在循环中而不是内联中出错
因为客户端和服务器端验证都很有用只需替换$errors[]使用$errors。@RaviHirani这不会导致上一个错误被上一个错误覆盖吗?@devpro如果您尝试注册,则不会有错误。请说所有内容都为空,然后发布所有错误,您必须单击每个错误以关闭。我要根据发布每个错误field@SagarGuhe例如他需要一次犯一个错误。我知道这不是个好办法。但他会得到他所需要的。与其发布所有错误,不如发布每个错误row@devpro:-如果我没有错,那么他需要对他的表单进行客户端验证。我已经发布了服务器端验证的解决方案,以获得第一个错误。我还更新了我的答案,并为他发布了一个链接,为您提供准确的引导验证。Ravi Hirani非常感谢您,这正是我试图做的。对于非常严重的错误,如果elseif??使用当前代码?@devpro:是的。我同意你的看法。If-else优于数组方式。我用他当前的代码给了他最小的解决方案。我也在用你建议的方式编辑我的答案。