gpt4 book ai didi

php - 如果语句不填充错误数组 php

转载 作者:行者123 更新时间:2023-11-29 02:43:41 25 4
gpt4 key购买 nike

好吧,我想要完成的是让 php 一次吐出多个错误,这样用户就不会感到厌烦。

示例:检查一项检查用户名是否存在,检查两项检查密码是否匹配,检查三项检查密码是否为 8 个字符或更多。用户在注册表中输入不存在的用户名、不匹配的密码和只有 5 个字符长的密码。那将是三个不同的错误。我试图一次输出所有三个,以便用户立即看到问题所在。在这种情况下,不必输出每个人和用户必须返回更改,然后再返回更改,然后再返回更改。

我感觉我的 if 语句设置有误。我知道这是一个用户错误,但我不知道它是什么。发生的情况是当我只触发一个错误时它工作得很好,但如果我触发多个错误数组是空的。

if(isset($_POST['rsn']) && isset($_POST['pw']) && isset($_POST['con_pw'])){

$rsn = preg_replace('/\s+/u', '', $_POST['rsn']);

$pw = $_POST['pw'];

$hashed_pw = password_hash($pw, PASSWORD_BCRYPT);

$con_pw = $_POST['con_pw'];

$query = $conn->prepare("SELECT rsn, rank_num, active FROM users WHERE rsn = :rsn");

$query->execute(array(":rsn" => $rsn));

$error = array();

while($row = $query->fetch(PDO::FETCH_ASSOC)){

$db_rsn = $row['rsn'];

$rank_num = $row['rank_num'];

$active = $row['active'];

if($rsn != $db_rsn){

$error[] = "Sorry, but the rsn: $rsn doesn\'t exist in or database";

if($pw != $con_pw){

$error[] = "Sorry, but your passwords dont match";

if($pw < 8){

$error[] = "Sorry, but your password must be 8 or more characters";

if($rank_num != "7" || $rank_num != "8" || $rank_num != "9" || $rank_num != "10" || $rank_num != "11" || $rank_num != "12"){

$error[] = "Sorry, but you dont have the permissions to register";

}

}

}

}

}

print_r($error);//output = array()

var_dump($error);//output = array(0)

这不是我合并问题区域时的全部代码。其余代码只是一个 foreach 循环迭代错误如果它不为空如果它是将用户插入 db

最佳答案

我不确定您为什么在提取查询期间使用 while 循环。如果你一次显示所有错误,那么你可以使用下面的代码:(虽然没有测试)让我知道它的工作与否。

if(isset($_POST['rsn']) && isset($_POST['pw']) && isset($_POST['con_pw'])){

$rsn = preg_replace('/\s+/u', '', $_POST['rsn']);

$pw = $_POST['pw'];

$hashed_pw = password_hash($pw, PASSWORD_BCRYPT);

$con_pw = $_POST['con_pw'];

$query = $conn->prepare("SELECT rsn, rank_num, active FROM users WHERE rsn = :rsn");

$query->execute(array(":rsn" => $rsn));

$error = array();

while($row = $query->fetch(PDO::FETCH_ASSOC)){

$db_rsn = $row['rsn'];

$rank_num = $row['rank_num'];

$active = $row['active'];
}
if($rsn != $db_rsn){

$error[] = "Sorry, but the rsn: $rsn doesn\'t exist in or database";
}

if($pw != $con_pw){

$error[] = "Sorry, but your passwords dont match";
}

if($pw < 8){

$error[] = "Sorry, but your password must be 8 or more characters";
}

if($rank_num != "7" || $rank_num != "8" || $rank_num != "9" || $rank_num != "10" || $rank_num != "11" || $rank_num != "12"){

$error[] = "Sorry, but you dont have the permissions to register";

}

}


print_r($error);//output

var_dump($error);//output

关于php - 如果语句不填充错误数组 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46397897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com