Je veux valider le formulaire de connexion à l'aide de la réponse à la réussite de Ajax, mais si toutes les marchandises doivent être redirigées vers une page d'index, mais cela ne fonctionne pas, je ne comprends pas ce qui ne va pas s'il vous plaît. Merci d'avance ..
if(isset($_POST["action"])){ $check_username = $_POST['username']; $check_password = $_POST['password']; if(empty($check_username) && empty($check_password)){ echo "Please fill all field"; }else{ $query = "SELECT * FROM user WHERE email = '{$check_username}' AND password = '{$check_password}' "; $select_query=mysqli_query($connection,$query); if(!$select_query){ die("QUERY FAILED".mysqli_error($select_query)); } if(mysqli_num_rows($select_query)==0){ echo "Username or password are incorrect!"; }else{ while ($row=mysqli_fetch_assoc($select_query)) { $_SESSION['username'] = $row['email']; echo $row['email']; } } } }
3 Réponses :
Dans votre réponse, vous avez écho à
echo 1;
Votre problème est que vous vérifiez si la valeur est 1 dans Ajax: modifie votre écho de $ ligne ['email'] code> to
1 code> p> p>
Je pense que le problème est la réponse de la réponse dans la réussite d'Ajax.
Vous vérifiez si une chaîne (courrier électronique ou message d'erreur) est égale et le même type de 1. Vous pouvez utiliser une réponse JSON avec le code d'état / d'erreur: p> XXX PRE> $check_username = $_POST['username'];
$check_password = $_POST['password'];
$res = array('status'=> 0, 'data' => '');
if(empty($check_username) && empty($check_password)){
$res['status'] = 0;
$res['data'] = "Please fill all field";
}else{
$query = "SELECT * FROM user WHERE email = '{$check_username}' AND password = '{$check_password}' ";
$select_query=mysqli_query($connection,$query);
if(!$select_query){
$res['status'] = 0;
$res['data'] = "QUERY FAILED".mysqli_error($select_query);
echo json_encode($res);
return;
}
if(mysqli_num_rows($select_query)==0){
$res['status'] = 0;
$res['data'] = "Username or password are incorrect!";
}else{
while ($row=mysqli_fetch_assoc($select_query)) {
$_SESSION['username'] = $row['email'];
$res['status'] = 1;
$res['data'] = "".$row['email'];
}
}
}
echo json_encode($res);
Et qu'en est-il du type de données dans la demande d'Ajax?
Oui, je manque de données, désolé.
Little Bobby dit Votre script est à risque d'attaques d'injection SQL. i> b>. Même échapper à la chaîne n'est pas en sécurité!
Ne jamais stocker des mots de passe en texte brut! b> Veuillez utiliser PHP's Fonctions intégrées i> b> Pour gérer la sécurité du mot de passe. Si vous utilisez une version PHP inférieure à 5.5, vous pouvez utiliser le
Password_hash () code> Compatibilité Pack . il n'est pas nécessaire de ESCAPE Mots de passe i> b> ou utilisez tout autre nettoyage mécanisme sur eux avant le hachage. Cela change i> le mot de passe et provoque un codage supplémentaire inutile.
Votre réponse est
echo $ $ Row ['Email']; code> Vous devez donc le changer en
Echo 1; Code>
Votre problème peut être que vous n'êtes pas écho à 1 quand c'est ce que votre réponse AJAX recherche. Essayez de faire écho à «succès» au lieu de
echo $ € Row ['e-mail']; code>, puis dans votre appel AJAX, votre instruction IF peut être
si (réponse == 'Succès') { Code>
Pourquoi es-tu echo email? voulez-vous montrer cet email? Vous devez utiliser ECHO 1; Mais en dehors de la boucle tandis que j'espère que vous utilisez
session_start () code> au niveau supérieur
Qu'avez-vous essayé de déboguer le problème?