Récupération de variable PHP avec json_encode
Bonjour à tous
Lorsque je tente de récupérer la variable PHP nommée $userRole le résultat de la requête Ajax montre : " "banker"Connexion en cours" , autrement dit la "response' concatène la variable en question avec le message contenu dans le 'Die' de mon code, pourquoi ?
Si je tente de récupérer uniquement la variable en faisant un json.PARSE de la 'response' (en écrivant response['userRole']) cela m'indique soit 'undefined' soit 'JSON.parse: unexpected character at line 1 column 1 of the JSON data' ...
La variable est pourtant retournée dans la réponse à la requête Ajax et est entourée de doubles quotes !
Merci d'avance pour vos éclaircissements
loginFormFn.php:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
<?php
require_once $_SERVER['DOCUMENT_ROOT'] . '/functions-php/connexion.php';
//$userAlert = "";
//$userRole = "";
if (isset($_POST['displayName']) && isset($_POST['userPassword'])) {
$displayName = $_POST['displayName'];
$userPassword = $_POST['userPassword'];
//Recherche les utilisateurs et banquiers ayant nom et mot de passe
//qui correspondent avec les données présentes dans la base de données
try {
$sql = $conn->query("SELECT userName, userPassword, userRole
FROM users
WHERE userName='" . $displayName . "'
AND userPassword='" . $userPassword . "'
UNION
SELECT bankerName, bankerPassword, userRole
FROM bankers
WHERE bankerName='" . $displayName . "'
AND bankerPassword='" . $userPassword . "'
");
} catch (PDOException $e) {
echo "La requête n'a retourné aucune donnée...";
}
//Si la requête est fructueuse on ouvre une session et on précise le rôle de l'utilisateur
//(banquier ou simple utilisateur : information remontée par la requête ($userRole))
$row = $sql->fetchObject();
$userRole = $row->userRole;
echo json_encode($userRole);
if ($sql->rowCount() > 0) {
session_start();
$_SESSION['loggedIn'] = true;
$_SESSION['displayName'] = $displayName;
$_SESSION['userRole'] = $userRole;
die("Connexion en cours...");
//Si utilisateur non reconnu on le signale dans le formulaire de login
//et l'on redirige vers la page de garde
} else {
die("Utilisateur ou mot de passe non reconnu, veuillez vérifier vos coordonnées");
}
}; |
loginForm.js :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| var myLoginForm = document.getElementById('loginForm');
$(document).ready(function () {
$("#submit").on('click', function (event) {
event.preventDefault();
var displayName = $("#displayName").val();
var userPassword = $("#userPassword").val();
if (displayName == "" || displayName.length < 5) {
alert("Veuillez renseigner un nom d'utilisateur (min 5 caractères)")
return false
}
if (userPassword == "") {
alert('Veuillez renseigner un mot de passe')
return false
}
$.ajax(
{
url: '/includes/loginForm.php',
method: 'POST',
data: {
loggedIn: true,
dataType: 'json',
displayName: displayName,
userPassword: userPassword
},
success: function (response) {
var userRolePHP = JSON.parse(response)
console.log('Variable venant de php = ' + userRolePHP)
$("#response").html(response)
/*setTimeout(() => {
//On ouvre soit la console d'administration pour un banquier
//soit la page des comptes de l'utilisateur
//if (userRole == "banker") {
//$(location).attr('href', '/views/adminConsole.php')
// } else {
//$(location).attr('href', '/views/clientAccounts.php')
//}
}, 1500)*/
},
});
//var userRolePHP = "this.response['userRole']"//Cette variable vient de la page loginFormFn.php
/* $.ajax(
{
url: '/includes/loginForm.php',
method: 'GET',
dataType: 'json',
success: function (response) {
alert('Variable venant de php = ' + response['userRole'])
}
});*/
});
});
/*var displayName = document.getElementById('displayName')
myLoginForm.addEventListener('submit', function (event) {
if (myLoginForm.checkValidity() === false) {
console.log('Une erreur est survenue')
event.preventDefault()
event.stopPropagation()
} else {
myLoginForm.classList.add('was-validated')
alert("Données envoyées")
}
})
// Empêche la fermeture du formulaire inclus dans le dropdown
document.getElementById("dropDownLoginForm").addEventListener('click', function (event) {
event.stopPropagation();
});*/
//alert(userRolePHP); |