Bonjour à tous,
Dans la fonction ci dessous je voudrais retourner la valeur $retour pour pouvoir l'exploiter dans le fichier loginFormFn.php qui, si condition vérifiée déclenche ma deuxième fonction "checkCredentials.php"...
Si je rajoute un return json_encode($retour) en ligne 27 cela marche et déclenche bien la deuxième fonction mais rend inexploitable cette fonction dans le script ajax pour le deuxième formulaire qui pourrait l'exploiter car le return placé devant le die dont a besoin le code Ajax est éxécuté avant celui-ci et du coup arrête le code sans que le die puisse retourner de résultat...
J'ai essayé en mettant le return en dernière ligne du 'try' cela ne retourne aucun résultat...
Avez vous une idée de comment faire ? Peut être que je n'utilise pas la bonne méthode ?
fonction userCheck()
loginFormFn.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php /*Retourne uniquement un nom d'utilisateur pour en vérifier l'existence dans la base (fonction devenant disponible aussi dans le formulaire d'inscription)*/ function userCheck() { global $displayName; global $conn; global $retour; $retour = []; try { $sql = "SELECT userName from users WHERE userName = :displayName UNION SELECT bankerName from bankers WHERE bankerName = :displayName"; $result = $conn->prepare($sql); $result->bindValue(':displayName', $displayName, pdo::PARAM_STR); $result->execute(); if ($result->rowCount() == 0) { $retour["reponsePHP"] = "userDoesNotExists"; die(json_encode($retour)); } else { $retour["reponsePHP"] = "userExists"; //On retourne la variable pour pouvoir continuer à vérifier le couple user/password //dans la fonction checkCredentials() die(json_encode($retour)); }; } catch (PDOException $e) { $e->getMessage(); die(); }; };
loginForm.js
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <?php require_once $_SERVER['DOCUMENT_ROOT'] . '/functions-php/connexion.php'; if (isset($_POST['displayNameLogin']) && isset($_POST['userPassword'])) { $displayName = $_POST['displayNameLogin']; $userPassword = $_POST['userPassword']; require_once $_SERVER['DOCUMENT_ROOT'] . '/functions-php/userCheck.php'; userCheck(); //Si l'utilisateur est reconnu comme existant alors on continue avec la vérification du couple user/password if ($retour['reponsePHP'] == "userExists") { require_once $_SERVER['DOCUMENT_ROOT'] . '/functions-php/checkCredentials.php'; checkCredentials(); } };
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
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
82
83
84
85
86
87 $(document).ready(function () { $("#submitLogin ").on('click', function (event) { $("#userAlert").html("") var displayName = $("#displayNameLogin").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", dataType: "json", data: { displayNameLogin: displayName, userPassword: userPassword }, success: function (response) { console.log(response.reponsePHP) switch (response.reponsePHP) { case "userDoesNotExists": $("#userAlert").html("Aucun utilisateur n'a été trouvé avec ce nom, veuillez vérifier votre nom d'utilisateur svp.") event.preventDefault() event.stopPropagation() break case "wrongCredentials": $("#userAlert").html("Le mot de passe fourni ne correspond pas à celui enregistré dans votre compte... Veuillez vérifier votre mot de passe svp.") event.preventDefault() event.stopPropagation() break case "banker": $("#userAlert").html("Connexion à la console d'administration en cours ...") setTimeout(function () { window.location.href = "/views/adminConsole.php" }, 2000); break case "user": $("#userAlert").html("Connexion à votre compte en cours ...") setTimeout(function () { window.location.href = "/views/clientAccounts.php" }, 2000); break /*default: $("#userAlert").html("Retour à la page d'accueil ...") setTimeout(function () { window.location.href = "/index.php" }, 2000);*/ } }, error: function (response) { alert(response + "Erreur xhr") } }); }); }); /*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);*/
registrationForm.js
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 //Empêche la fermeture du formulaire inclus dans le dropdown /*document.getElementById("dropDownRegistrationForm").addEventListener('click', function (event) { event.stopPropagation(); });*/ $(document).ready(function () { $("#submitRegistration").on('click', function (event) { event.preventDefault var displayName = $("#displayNameRegistration").val() /*if (displayName == "" || displayName.length < 5) { alert("Veuillez renseigner un nom d'utilisateur (min 5 caractères)") return false } //var userFirstName = $("#userFirstName").val(); //console.log('Prénom : ' + userFirstName)*/ $.ajax( { url: '/includes/registrationForm.php', method: "POST", dataType: "json", data: { displayNameRegistration: displayName }, success: function (response) { switch (response.reponsePHP) { case "userDoesNotExists": alert('Nom disponible !') break case "userExists": //$("#userAlert").html("Ce nom d'utilisateur existe déjà, veuillez en choisir un autre (min 5 caractères.") alert('Nom non disponible !') event.preventDefault event.stopPropagation break } }, error: function (response) { alert('probleme avec la response : ' + response + " " + displayName) } }) }); }); //const myRegistrationForm = document.getElementById('registrationForm') /*myRegistrationForm.addEventListener('submit', function (event) { if (myRegistrationForm.checkValidity() === false) { event.preventDefault() event.stopPropagation() } myRegistrationForm.classList.add('was-validated') })*/ /*form.classList.add('was-validated') var userLastName = document.getElementById('userLastName').value alert(userLastName) })*/ /*function formValidation() { var userLastName = document.getElementById('userLastName').value alert(userLastName) } //Validation des champs, contrôle de la date de naissance /*var form = document.querySelector('.needs-validation'); form.addEventListener('submit', function(event) { var userBirthDate = document.getElementById('userLastName').Value alert('Date naissance renseignée :' + userBirthDate) }) function getAgeFromBirthDate(year, month, day) { const date = new Date(); date.setFullYear(date.getFullYear() - year); date.setMonth(date.getMonth() - month); //date.setDate(date.getDate() - day); return date; }; console.log(getAgeFromBirthDate(1969, 10, 7).getFullYear()); function birthDateValidation() { if (birthdate < 18) { alert('La date de naissance renseignée : ' + birthDate + 'indique que vous n\'êtes pas encore majeur(e), veuillez corriger la date ou bien annuler votre demande.') event.preventDefault() event.stopPropagation() } }*/
checkCredentials.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php function checkCredentials() { /*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*/ global $displayName; global $userPassword; global $conn; global $retour; $retour = []; try { $sql = "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"; $result = $conn->prepare($sql); $result->bindValue(':displayName', $displayName, pdo::PARAM_STR); $result->bindValue(':userPassword', $userPassword, pdo::PARAM_STR); $result->execute(); } catch (PDOException $e) { $retour['reponsePHP'] = "La requête n'a retourné aucune donnée..."; die(json_encode($retour)); } //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 = $result->fetchObject(); if ($result->rowCount() == 0) { $retour['reponsePHP'] = 'wrongCredentials'; die(json_encode($retour)); } else { session_start(); $userRole = $row->userRole; $_SESSION['loggedIn'] = true; $_SESSION['displayName'] = $displayName; $_SESSION['userRole'] = $userRole; //On envoie le type d'utilisateur en réponse pour traitement dans le switch Ajax $retour['reponsePHP'] = $userRole; die(json_encode($retour)); } }
Partager