Erreur 500 lorsque je tente la connexion
RésoluHitNRun Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je travail actuellement sur un projet pour mes cours, n'ayant pas encore appris les connaissances requise pour ce dernier j'essaye tant bien que mal de me débrouiller grâce à des recherches internet et la précieuse aide d'Open Classroom cependant je me retrouve aujourd'hui confronté à un problème que j'ai du mal à comprendre et corriger: j'ai déjà créer de quoi s'inscrire un formulaire qui marche bien avec ma bdd, mais lorsque j'essaye de me connecter, dès que j'entre quoi que ce soit dans les champs de mon formulaire de connexion j’obtiens une erreur 500.
Je vous joins ici mon code, tout cela n'est qu'une première pour moi alors je ne comprend pas forcément bien tout, n'hésitez pas à me donner des conseils si vous voyer des choses à améliorer :
Voici la partie de mon formulaire:
<form action="verification.php" method="POST"> <?php if(isset($errorMessage)) : ?> <div class="alert alert-danger" role="alert"> <?php echo $errorMessage; ?> <?php endif; ?> <p> Adresse mail <input class="champ1" type="email" name="email" placeholder="***@***"> Mot de passe <input class="champ1" type="password" name="pswd" placeholder="password"> </p> <input type="submit" value="Valider" class="btn btn-light"> </form>
et voici la partie de mon fichier "verification.php"
<?php session_start(); try { // On se connecte à MySQL $mysqlClient = new PDO( 'mysql:host=localhost;dbname=neptune;charset=utf8', 'root', 'root'); ini_set('display_errors', 'on'); } catch(Exception $e) { // En cas d'erreur, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); } // On récupère tout le contenu de la table password $sqlQuery = 'SELECT * FROM password'; $passwordStatment = $mysqlClient->prepare($sqlQuery); $passwordStatment->execute(); $password = $passwordStatment->fetchAll(); // Validation du formulaire if (isset($_POST['email']) && isset($_POST['pswd'])) { foreach ($password as $password) { if ( $password['email'] === $_POST['email'] && $password['pswd'] === $_POST['pswd']) { $loggedUser = [ 'email' => $password['email'], ]; header("Location :index.php"); } else { $errorMessage = sprintf('Les informations envoyées ne permettent pas de vous identifier : (%s/%s)', $_POST['email'], $_POST['pswd'] ); } $_SESSION['email']=$_POST['email']; } } error_reporting(E_ALL);?>
- Erreur 500 lorsque je tente la connexion
- Gmail connexion - Guide
- Erreur 500 - Guide
- Site inaccessible n'autorise pas la connexion - Guide
- Formate pour taxer client 500€ - Forum PDF
- Www.youtube.com n'autorise pas la connexion. - Forum YouTube
1 réponse
Bonjour,
Quelques erreurs dans ton code et des choses à améliorer.
<?php //-----------------------------------------------------------// //démarrage des sessions //-----------------------------------------------------------// session_start(); //-----------------------------------------------------------// //Activation de l'affichage des erreurs pHP ( à mettre au début du code ) //-----------------------------------------------------------// error_reporting(E_ALL); ini_set('display_errors', 'on'); //-----------------------------------------------------------// // Connexion à la bdd ( je te conseillerai de le placer dans un fichier externe // et à l'inclure ( via un require_once là où tu en as besoin //-----------------------------------------------------------// try{ $bdd =new PDO('mysql:host=localhost;dbname=neptune;charset=utf8', 'root', 'root'); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } //-----------------------------------------------------------// // Validation du formulaire //-----------------------------------------------------------// //Récupéaration propre des variables AVANT de les utiliser // pour ça, tu peux utilisr l'écriture ternaire (sorte de if/else) $email = !empty($_POST['email']) ? trim($_POST['email']) : NULL; $pswd = !empty($_POST['pswd']) ? trim($_POST['pswd']) : NULL; if ($email && $pswd) { //-----------------------------------------------------------// // On récupère les infos de l'utilisateur en fonction de son email //-----------------------------------------------------------// $sql = 'SELECT * FROM password WHERE email =:email'; $datas = [':email'=>$email]; $passwordStatment = $bdd->prepare($sql); $passwordStatment->execute($datas ); $user = $passwordStatment->fetch(); // on retourne une seule ligne de la bdd $bddPswd = $user['pswd'] ; // NB : On ne doit pas stocker le mot de passe en clair dans la bdd... il faut le "crypter" ( renseignes toi sur les fonctions password_hash et password_verify if($bddPswd == $pswd ){ $_SESSION['user']=$user; header("Location :index.php"); exit; } else { $errorMessage = sprintf('Les informations envoyées ne permettent pas de vous identifier : (%s/%s)', $email, $pswd ); $_SESSION['error']=$errorMessage; header("Location :index.php"); exit; } } ?>
<?php //Démarrage des sessions session_start(); //activation affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //récupération des variables avant de les utiliser // là encore.. écriture ternaire... $errorMessage = !empty($_SESSION['error']) ? !empty($_SESSION['error']) : NULL; ?> <!Doctype html> <html> <!-- le reste de ton html jussqu'à ton formulaire...... --> <!-- .... --> <form action="verification.php" method="POST"> <?php if($errorMessage) { echo '<div class="alert alert-danger" role="alert">'; echo $errorMessage; echo "</div>"; } ?> <p> Adresse mail <input class="champ1" type="email" name="email" placeholder="***@***"> Mot de passe <input class="champ1" type="password" name="pswd" placeholder="password"> </p> <input type="submit" value="Valider" class="btn btn-light"> </form>
Merci beaucoup pour ta précieuse aide, cela marche très bien désormais