ok maintenant en dessous de $resut =
tu fait un var_dump($result)
Version imprimable
ok maintenant en dessous de $resut =
tu fait un var_dump($result)
C'est bien comme ça que tu me demandes de placer les lignes de codes que tu m'as dites ?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 if(isset($_POST['submit2'])) { include "connexionBD.php"; // Variables temporaires stockant le pseudo et le mot de passe. $pseudo = utf8_decode($_POST['pseudo']); $mdp = sha1($_POST['mdp']); // Vérification des identifiants si ils existent $req = 'SELECT id FROM `bdd`.`inscription` WHERE pseudo = ? AND mdp =?'; // Exécution de la requête comme pour l'inscription. $prepa = mysqli_prepare($connexion, $req); //Préparation de la requète. mysqli_stmt_bind_param($prepa ,'ss', $pseudo, $mdp); //Lie les variables à la requête précédement inscrite. $prepa->execute(); //Execution de la requete. $resultat = mysqli_stmt_fetch($prepa); //Retourne le résultat de la requête. if ($resultat) { $_SESSION['pseudo'] = $pseudo; $_SESSION['role'] = $resultat['role']; var_dump($_SESSION['role']); var_dump($resultat); } else { echo '<center><p id="mauvais">Mauvais identifiant ou mot de passe !</center></p><br>'; } } ?>
Si oui j'ai ça en haut à gauche de mon formulaire de connexion :
http://www.noelshack.com/2015-08-1424112090-capture.png
euhh plutôt var_dump($result['role']);
Ca m'affiche "null"
Après cette étape, j'aurais terminé mon projet à 80% ... :(
Je crois que je n'arrive toujours pas à définir la variable car j'ai cette erreur :
Undefined index: role
je pense plutôt qu'il y a un problème lorsque tu enregistre ton utilisateur en bdd.
regarde directement dans ta base de donnée, regarde ce qu'il s'y passe. Si tu as un user avec le pseudo test qui a un role dans ce cas, c'est au niveau de ta requête !
Après je n'utilise pas mysqli mais plutôt PDO, qui est plus simple je trouve !!
Donc regarde tes données avant de vouloir faire une requête !
Bon j'ai modifié mon code et un peu avancé :
https://wall.deblan.org/x1d3c/php/1/
https://wall.deblan.org/x1d3b/php/1/
J'ai placé un echo pour le role pour vérifier si je le récupère et c'est le cas car j'obtiens "role : [Organisateur]"
Le problème vient par rapport aux menu, lorsque je me connecte, aucun menu n'apparait.
vas voir dans ta base de donnée directement ! (phpmyadmin) et regarde ce qui est enregistré !
Lorsque tu fair un var_dump($resultat['role']) est que tu obtiens null, c'est qu'il y a un problème dans ta base de donnée, que tu enregistre mal tes données
Bon ok je vais juste me pendre, le problème venait de la page des menu, au lieu "organisateur" il fallait que je mette "Organisateur"
Je vais juste me pendre là ;)
Merci énormément pour votre aide
ok donc ça fonctionne ?
Pour ton erreur, c'est pour ça qu'il vaut mieux filtrer sur un id, l'option de faire une deuxième table avec les types de compte aurais été plus judicieux selon moi !
J'ai voulu me simplifier la tâche en mettant une seule table car n'y connaissant que très peu de choses en SQL PHP ...
Oui la ça marche
Tout compte fait ça ne fonctionne pas très bien, le fait de laisser $count = 1 :
Code:
1
2
3
4
5
6
7
8
9
10 if ($count = 1) { $_SESSION['pseudo'] = $pseudo; $_SESSION["role"] = $role; header('Location: index.php'); } else { echo '<center><p id="mauvais">Mauvais identifiant ou mot de passe !</center></p><br>'; }
Dans le formulaire de connexion, je peux rentrer n'importe quoi, je ne suis pas connecté mais redirigé à l’accueil alors que le else et son echo "Mauvais identifiants" etc devrait s'afficher.
Tu connais la différence entre une affectation et une comparaison j'imagine ? :whistle:Code:if ($count = 1)
Petit indice : une affectation est toujours équivalente à true...
Oui oui, si je met un double =, je n'arrive plus du tout a me connecter, avec aucun compte.
Il sert à quoi le utf8_decode() ?Code:$pseudo = utf8_decode($_POST['pseudo']);
Si je le met pas et que mon pseudo comporte des accents, ils ne sont pas afficher dans la base de données.
J'ai essayer de l'enlever pour voir si cela marché, toujours rien :(
Il faut tout mettre en UTF8 :
http://j-willette.developpez.com/tut...-site-en-utf8/
J'ai enlevé le utf8_decode et tout mis en UTF8 mais ça ne règle pas mon problème
C'est bon ça marche parfaitement maintenant :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <?php if (isset($_POST['submit2'])) { include 'connexionBD.php'; // Exécution de la requête comme pour l'inscription. $requete = mysqli_query($connexion, 'SELECT * FROM `bdd`.`inscription` WHERE pseudo = "' . $_POST["pseudo"] . '" AND mdp = "' . sha1($_POST['mdp']) . '"'); if ($requete && mysqli_num_rows($requete) > 0) { $ligne = $requete->fetch_assoc(); $_SESSION['pseudo'] = $ligne['pseudo']; $_SESSION["role"] = $ligne["role"]; header('Location: index.php'); } else { echo '<center><p id="mauvais">Mauvais identifiant ou mot de passe !</center></p><br>'; } }