Problème de connexion
Résolu/Fermé
A voir également:
- Problème de connexion
- Gmail connexion - Guide
- Hotmail connexion - Guide
- Facebook connexion - Guide
- Problème de connexion - Guide
- Cette option de connexion est désactivée en raison des échecs des tentatives de connexion - Forum PC portable
2 réponses
Felice_
Messages postés
265
Date d'inscription
mardi 25 avril 2017
Statut
Membre
Dernière intervention
20 juillet 2017
11
Modifié le 15 mai 2017 à 10:08
Modifié le 15 mai 2017 à 10:08
Visiblement, il y a trois cas :
— Les sessions ne sont pas sauvegardées
— Les sessions ne sont pas lues
— Les sessions sont détruites après la première fois
Alors en premier temps je testerai déjà de fermer les blocs des « else » correctement de tes conditions et je fermerai l'écriture une fois plus nécessaire :
— Les sessions ne sont pas sauvegardées
— Les sessions ne sont pas lues
— Les sessions sont détruites après la première fois
Alors en premier temps je testerai déjà de fermer les blocs des « else » correctement de tes conditions et je fermerai l'écriture une fois plus nécessaire :
<?php if (isset ( $_POST ['connecter'] )) { if (isset ( $_POST ['user'] ) && isset ( $_POST ['mdp'] )) { $user = $_POST ['user']; $mdp = $_POST ['mdp']; $sql = "SELECT * FROM compte WHERE user=:user AND mdp=:mdp "; $query = $pdo->prepare ( $sql ); // Lie un nom de variable avec un paramètre $query->bindParam ( ':user', $user ); $query->bindParam ( ':mdp', $mdp ); $query->execute (); $_SESSION['user'] = $user; $_SESSION['mdp'] = $mdp; session_write_close (); } else { return 0; } } else { return false; } ?>
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
Modifié le 15 mai 2017 à 18:04
Modifié le 15 mai 2017 à 18:04
Bonjour,
Premièrement .. active la gestion des erreurs PDO https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs et place tes requêtes dans des blocs TRY/CATCH (comme dans l'exemple du lien )
Puis fais un
Et enfin.. assures toi que les sessions sont bien démarrées sur toutes tes pages ... y compris dans ta page authentification.php
Cordialement,
Jordane
Premièrement .. active la gestion des erreurs PDO https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs et place tes requêtes dans des blocs TRY/CATCH (comme dans l'exemple du lien )
Puis fais un
print_r($_SESSION);au début de tes pages.
Et enfin.. assures toi que les sessions sont bien démarrées sur toutes tes pages ... y compris dans ta page authentification.php
Cordialement,
Jordane
Bon j'ai géré les erreurs PDO en rajoutant les lignes dans mon fichier accesbase.php :
Ensuite j'ai isolé ma requêtes dans un bloc try et catch dans mon fichier authentification.php :
Ensuite dans mon fichier index.php, j'ai rajouté le print_r($_SESSION) :
Et il m'indique :
Array ( [mdp] => honore )
Et le user n'est pas pris en compte.
Pour le session_start, je l'ai indiqué dans mon fichier _debut.php qui est inclus sur toute les pages.
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
Ensuite j'ai isolé ma requêtes dans un bloc try et catch dans mon fichier authentification.php :
<?php include_once ('modele/accesbase.php'); if (isset ( $_POST ["connecter"] )) { if (isset ( $_POST ["user"] ) && isset ( $_POST ["mdp"] )) { $user = $_POST ["user"]; $mdp = $_POST ["mdp"]; $sql = "SELECT * FROM compte WHERE user=:user AND mdp=:mdp "; $datas = array ( ':user' => $user, ':mdp' => $mdp ); try { $query = $pdo->prepare ( $sql ); // Lie un nom de variable avec un paramètre $query->bindParam ( ':user', $user ); $query->bindParam ( ':mdp', $mdp ); $query->execute ( $datas ); $_SESSION ["user"] = $user; $_SESSION ["mdp"] = $mdp; // } else // return 0; } catch ( Exception $e ) { // en cas d'erreur : echo " Erreur ! " . $e->getMessage (); echo " Les datas : "; print_r ( $datas ); } } } // } else // return false; ?>
Ensuite dans mon fichier index.php, j'ai rajouté le print_r($_SESSION) :
print_r($_SESSION);
Et il m'indique :
Array ( [mdp] => honore )
Et le user n'est pas pris en compte.
Pour le session_start, je l'ai indiqué dans mon fichier _debut.php qui est inclus sur toute les pages.
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
>
Utilisateur anonyme
15 mai 2017 à 18:43
15 mai 2017 à 18:43
Tu peux faire le print session dans ton fichier authentification.php ?
Et.. n'aurais tu pas, quelquepart un code du genre unset($_SESSION['user']) ?
et au cas où .. si tu renommes ta variable"user" en autre chose ... est-ce qu'il garde la variable en session ou pas ? (sachant que tu devrais mettre l' ID du user plutôt que son login..... )
ID que tu récupères lorsque tu vérifies que l'utilisateur existe ...
Ensuite, pour info, tu utilises soit le bindParam .. soit l'array de DATA dans le execute ....
Et.. n'aurais tu pas, quelquepart un code du genre unset($_SESSION['user']) ?
et au cas où .. si tu renommes ta variable"user" en autre chose ... est-ce qu'il garde la variable en session ou pas ? (sachant que tu devrais mettre l' ID du user plutôt que son login..... )
ID que tu récupères lorsque tu vérifies que l'utilisateur existe ...
Ensuite, pour info, tu utilises soit le bindParam .. soit l'array de DATA dans le execute ....
Pour le unset($_SESSION['user']) , j'en avais un pour mon bouton de déconnexion. Je l'ai enlevé et remplacer par la fonction session_unset().
Alors j'ai renommé ma variable $user en $utilisateur et visiblement il ne garde pas la session. Après pour l'ID le problème c'est que dans ma table compte il y a que deux colonnes, la colonne user et la colonne mdp. Et pas de colonne ID.
Effectivement pour le bindParam et comme mentionné dans ton lien, j'ai enlevé le tableau data.
Après tout ces changements, pas de miracle. Et le print_r($_SESSION) sur le authentification.php ne s'affiche pas.
Alors j'ai renommé ma variable $user en $utilisateur et visiblement il ne garde pas la session. Après pour l'ID le problème c'est que dans ma table compte il y a que deux colonnes, la colonne user et la colonne mdp. Et pas de colonne ID.
Effectivement pour le bindParam et comme mentionné dans ton lien, j'ai enlevé le tableau data.
Après tout ces changements, pas de miracle. Et le print_r($_SESSION) sur le authentification.php ne s'affiche pas.
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
>
Utilisateur anonyme
16 mai 2017 à 18:09
16 mai 2017 à 18:09
... c'est toujours la faute du unset caché :-)
Pense à mettre la discussion en résolu.
Bonne soirée.
Pense à mettre la discussion en résolu.
Bonne soirée.
15 mai 2017 à 17:22
15 mai 2017 à 17:26