J'essaie de rationaliser mon système de connexion en utilisant ajax pour gérer de sauvegarder et de former des demandes au serveur. Je veux poster mes données de forme à une page de PHP, puis renvoyer vrai/faux et «pas assez de données» si les paramètres corrects n'ont pas été passés.
Mon problème est que ma requête AJAX n'envoie pas les données que je lui envoie.
Voici ma fonction JavaScript:
function confirm_login()
{
val_UName = document.login_form.username.value;
val_Pwd = document.login_form.password.value;
var result = null;
var scriptUrl = "login_confirm.php";
$.ajax({
url: scriptUrl,
type: 'post',
data: ({username : val_UName, password : val_Pwd}),
dataType: 'html',
async: false,
success: function(data) {
result = data;
}
});
result = result.split('|');
if(result[1] == 'true')
window.location = "index.php";
else
alert('Could not log you in!\n\n'+result[0]);
}
Cette fonction est appelée dans l'événement onclick du bouton soumettre le formulaire. Maintenant, j'ai utilisé les outils de débogage dans Chrome et je sais que val_UName et val_Pwd obtiennent les valeurs de formulaire. Il est donc sans aucun doute une rupture entre ici et le login_confirm.php
Juste pour être complet bien, voici ce qui se passe dans login_confirm.php (je suis parti les lignes qui se connectent à la DB et la fermeture de la connexion):
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
if($username == '' || $password == '')
echo 'Not Enough Data|';
$login_query = "SELECT * FROM users WHERE u_name = '$username' AND pwd = '$password'";
$result = mysql_query($login_query);
$result_rows = mysql_num_rows($result);
if($result_rows > 0)
{
session_start();
$row = mysql_fetch_assoc($result);
$_SESSION['loggedin'] = true;
$_SESSION['uname'] = $row['u_name'];
$_SESSION['uID'] = $row['pkid'];
$_SESSION['email'] = $row['email'];
$_SESSION['roleID'] = $row['fk_roleid'];
echo 'true';
}
else
{
echo 'false';
}
Quelqu'un sait ce qui se passe ici ou a déjà vu quelque chose comme ça?
PS. J'ai même essayé de changer en utilisant GET et cela ne fonctionne toujours pas ...
Quelles données recevez-vous? –
Ma page PHP ne retournera 'Pas assez de données' si les variables $ username ou $ password sont des chaînes vides, donc none. – CrowderSoup
Prenez l'outil appelé Fiddler. Il vous permettra de voir les données de demande et les données de réponse pour tous les appels effectués. Quels que soient les résultats visibles dans la requête, les données confirmeront la réception de la page PHP. –