J'ai obtenu un code ci-dessous où il effectue certaines tâches php/mysqli sur la validation et le succès. Le problème que j'ai avec le code ci-dessous est que si l'utilisateur entre un nom d'utilisateur ou un email incorrect qui est déterminé par une requête SELECT, s'il n'y a pas de nom d'utilisateur et de courriel, il devrait afficher le message d'erreur Your Username or Email was not Correct
. Mais à la place, il affiche ce message d'erreur An error has occured, your Email was not sent containing your new Password
.mauvais message de validation apparaissant dans php/mysqli
Ma question est la suivante: pourquoi affiche-t-il le message d'erreur incorrect et comment puis-je l'obtenir pour afficher le message d'erreur correct?
if(isset($_POST['resetbtn'])){
//get form data
$user = $_POST['user'];
$email = $_POST['email'];
$errors = array();
if(!$errors) {
$query = "SELECT TeacherUsername, TeacherEmail FROM Teacher WHERE TeacherUsername = ? AND TeacherEmail = ?";
// prepare query
$stmt=$mysqli->prepare($query);
// You only need to call bind_param once
$stmt->bind_param("ss",$user, $email);
// execute query
$stmt->execute();
// get result and assign variables (prefix with db)
$stmt->bind_result($dbTeacherUsername, $dbTeacherEmail);
//get number of rows
$stmt->store_result();
$numrows = $stmt->num_rows();
if ($numrows == 1){
$pass = rand();
$teacherpassword = md5($pass);
$teacherpassword = substr($pass, 0, 15);
$teacherpassword = md5(md5("g3f".$pass."rt4"));
//update password in db
$updatesql = "UPDATE Teacher SET TeacherPassword = ? WHERE TeacherUsername = ?";
$update = $mysqli->prepare($updatesql);
$update->bind_param("ss", $teacherpassword, $user);
$update->execute();
$query = "SELECT TeacherUsername, TeacherPassword FROM Teacher WHERE TeacherUsername = ? AND TeacherPassword = ?";
// prepare query
$stmt=$mysqli->prepare($query);
// You only need to call bind_param once
$stmt->bind_param("ss",$user,$teacherpassword);
// execute query
$stmt->execute();
// get result and assign variables (prefix with db)
$stmt->bind_result($dbTeacherUsername, $dbTeacherPassword);
//get number of rows
$stmt->store_result();
$selectnumrows = $stmt->num_rows();
}else{
if(!$numrows){
$errormsg = "Your Username or Email was not Correct";
$user = "";
$email = "";
}
}
}
if(empty($errors)) {
if ($selectnumrows == 1){
$errormsg = "<span style='color: green'>Your Password has been Reset. An Email has been sent with your New Password</span>";
else{
$errormsg = "An error has occured, your Email was not sent containing your new Password";
}
}
est inférieure à la forme:
echo "<form action='./forgotpass.php' method='post'>
<table>
<tr>
<td></td>
<td id='errormsg'>$errormsg</td>
</tr>
<tr>
<td>Username</td>
<td><input type='text' name='user' value='$user'/><br/>".$error_user."</td>
</tr>
<tr>
<td>Email</td>
<td><input type='text' name='email' value='$email'/><br/>".$error_email."</td>
</tr>
<tr>
<td></td>
<td><input type='submit' name='resetbtn' value='Reset Password' /></td>
</tr>
</table>
</form>";
-1 pour utiliser un code que vous _got de anywhere_. Apprenez les bases. –
Parfois, en utilisant le code que vous trouvez quelque part apprendre est dans le chemin vers l'apprentissage des bases! – Vasilis
Eh bien, vous (l'OP) devriez au moins indenter le code et faire correspondre les crochets correctement. –