Probleme de connexion a la bdd
Fermé
Anicet
-
16 oct. 2021 à 10:13
jordane45 Messages postés 38340 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 9 décembre 2024 - 17 oct. 2021 à 20:31
jordane45 Messages postés 38340 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 9 décembre 2024 - 17 oct. 2021 à 20:31
A voir également:
- Probleme de connexion a la bdd
- Gmail connexion - Guide
- Hotmail connexion - Guide
- D'où peut venir un problème de connexion internet sur un ordinateur ? - Guide
- Site inaccessible n'autorise pas la connexion - Guide
- Facebook connexion - Guide
10 réponses
Anicet14
Messages postés
3
Date d'inscription
dimanche 17 octobre 2021
Statut
Membre
Dernière intervention
17 octobre 2021
1
17 oct. 2021 à 20:02
17 oct. 2021 à 20:02
Ok c'est bon j'ai reglé le probleme, tout fonctionne correctement :)
Mercii beaucoup en tout cas
Mercii beaucoup en tout cas
jordane45
Messages postés
38340
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 décembre 2024
4 716
16 oct. 2021 à 10:25
16 oct. 2021 à 10:25
Bonjour,
Déjà... pour poster du code sur le forum, tu dois utiliser les BALISES DE CODE.
Explications ( à lire entièrement ! ) disponibles ici https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite.. pourquoi ouvres tu ta connexion à la bdd ... après avoir déjà fait des requetes aux lignes de code précédentes ??
Puis.. as tu un souci également pour accéder à phpmyadmin ?
SI oui, le souci ne vient pas de ton code php ..
Déjà... pour poster du code sur le forum, tu dois utiliser les BALISES DE CODE.
Explications ( à lire entièrement ! ) disponibles ici https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite.. pourquoi ouvres tu ta connexion à la bdd ... après avoir déjà fait des requetes aux lignes de code précédentes ??
Puis.. as tu un souci également pour accéder à phpmyadmin ?
SI oui, le souci ne vient pas de ton code php ..
D'accord donc il faut que je supprime la ligne avec "SELECT ... FROM..... WHERE..... ?
Et oui en fait j'ai fais un formulaire classique d'inscription et quand je le test, ça m'affiche cette erreur.
Et oui en fait j'ai fais un formulaire classique d'inscription et quand je le test, ça m'affiche cette erreur.
<?php if(!empty($_POST['pseudo']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['password_retype'])) { $pseudo = htmlspecialchars($_POST['pseudo']); $email = htmlspecialchars($_POST['email']); $password = htmlspecialchars($_POST['password']); $password_retype = htmlspecialchars($_POST['password_retype']); $check = $bdd->prepare('SELECT pseudo, email, password FROM users WHERE email = ?'); $check->execute(array($email)); $data = $check->fetch(); $row = $check->rowCount(); $email = strtolower($email); if($row == 0){ if(strlen($pseudo) <= 100){ if(strlen($email) <= 100){ if(filter_var($email, FILTER_VALIDATE_EMAIL)){ if($password == $password_retype){ $cost = ['cost' => 12]; $password = password_hash($password, PASSWORD_BCRYPT, $cost); $ip = $_SERVER['REMOTE_ADDR']; $insert = $bdd->prepare('INSERT INTO user (pseudo, email, password, ip, token) VALUES (:pseudo, :email, :password, :ip, :token)'); $insert->execute(array( 'pseudo' => $pseudo, 'email' => $email, 'password' => $password, 'ip' => $ip, 'token' => bin2hex(openssl_random_pseudo_bytes(64)) )); header('Location:inscription.php?reg_err=success'); die(); }else{ header('Location: inscription.php?reg_err=password'); die();} }else{ header('Location: inscription.php?reg_err=email'); die();} }else{ header('Location: inscription.php?reg_err=email_length'); die();} }else{ header('Location: inscription.php?reg_err=pseudo_length'); die();} }else{ header('Location: inscription.php?reg_err=already'); die();} } ?>
jordane45
Messages postés
38340
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 décembre 2024
4 716
16 oct. 2021 à 10:48
16 oct. 2021 à 10:48
là maintenant.. tu n'as même plus de ligne de code permettant d'établir la connexion à ta bdd ..
Je suppose donc que tu n'as plus le même message d'erreur....
A moins que tu ne nous aies pas mis tout ton code et que, au dessus de ton if il y a la connexion à la bdd ???
Quoi qu'il en soit, je t'ai demandé si tu avais le même souci avec phpmyadmin... alors ?
Je suppose donc que tu n'as plus le même message d'erreur....
A moins que tu ne nous aies pas mis tout ton code et que, au dessus de ton if il y a la connexion à la bdd ???
Quoi qu'il en soit, je t'ai demandé si tu avais le même souci avec phpmyadmin... alors ?
Alors au dessus du if j'ai :
Avec ça ça ne marche toujours pas. Et pour phpMyAdmin, j'arrive a y accéder manuellement sans problemes.
<?php try { $bdd = new PDO("mysql:host=localhost;dbname=premiere;port=3306;charset=utf-8", 'root' , '' ); } catch(PDOException $e) { die('Erreur : '.$e->getMessage()); } ?>
Avec ça ça ne marche toujours pas. Et pour phpMyAdmin, j'arrive a y accéder manuellement sans problemes.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Par curiosité j'ai essayé d'enlever la connexion a la bdd en premiere ligne donc plus aucune connexion a la bdd n'est dispo et lorsque j'execute mon code il me met toujours le message d'erreur du mot de passe [1045]. Du coup le probleme vient d'ailleurs mais je ne sais absolument pas d'ou. Pouvez vous m'aider ?
Merci
Merci
jordane45
Messages postés
38340
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 décembre 2024
4 716
Modifié le 17 oct. 2021 à 17:39
Modifié le 17 oct. 2021 à 17:39
Il faudrait que tu nous montres l'intégralité de ton code....
Sans oublier de nous montrer les fichiers qui sont inclus dans ton script ou qui incluent ton script
( en prenant soin de bien indiquer le nom de chaque fichier pour chaque code montré)
Mais avant ça, histoire de voir si tu as un souci de lien entre le php et ta bdd, merci de créer un nouveau fichier php ( nommé par exemple : test.php )
dans lequel tu colleras le code suivant
Et dis nous ce que ça t'affiche lorsque tu vas sur cette page depuis ton navigateur.
Sans oublier de nous montrer les fichiers qui sont inclus dans ton script ou qui incluent ton script
( en prenant soin de bien indiquer le nom de chaque fichier pour chaque code montré)
Mais avant ça, histoire de voir si tu as un souci de lien entre le php et ta bdd, merci de créer un nouveau fichier php ( nommé par exemple : test.php )
dans lequel tu colleras le code suivant
<?php //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //connexion à la bdd avec activation des erreurs PDO try{ $bdd =new PDO('mysql:host=localhost;dbname=premiere;charset=utf8', '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); echo " Connexion à la bdd OK !"; } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); }
Et dis nous ce que ça t'affiche lorsque tu vas sur cette page depuis ton navigateur.
1_ config.php :
2_ index.php :
3_ inscription.php :
4_ inscription_traitement.php :
5_ connexion.php :
6_ landing.php :
7_ deconnexion.php :
<?php try { $bdd = new PDO('mysql:host=localhost;dbname=premiere;charset=utf8', 'root' , '' ); } catch(PDOException $e) { die('Erreur : '.$e->getMessage()); } ?>
2_ index.php :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="author" content="NoS1gnal"/> <link href="https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/magnific-popup.min.css" rel="stylesheet" /> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> <title>Connexion</title> </head> <body> <div class="login-form"> <?php if(isset($_GET['login_err'])) { $err = htmlspecialchars($_GET['login_err']); switch($err) { case 'password': ?> <div class="alert alert-danger"> <strong>Erreur</strong> mot de passe incorrect </div> <?php break; case 'email': ?> <div class="alert alert-danger"> <strong>Erreur</strong> email incorrect </div> <?php break; case 'already': ?> <div class="alert alert-danger"> <strong>Erreur</strong> compte non existant </div> <?php break; } } ?> <form action="connexion.php" method="post"> <h2 class="text-center">Connexion</h2> <div class="form-group"> <input type="email" name="email" class="form-control" placeholder="Email" required="required" autocomplete="off"> </div> <div class="form-group"> <input type="password" name="password" class="form-control" placeholder="Mot de passe" required="required" autocomplete="off"> </div> <div class="form-group"> <button type="submit" class="btn btn-primary btn-block">Connexion</button> </div> </form> <p class="text-center"><a href="inscription.php">Inscription</a></p> </div> <style> .login-form { width: 340px; margin: 50px auto; } .login-form form { margin-bottom: 15px; background: #f7f7f7; box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3); padding: 30px; } .login-form h2 { margin: 0 0 15px; } .form-control, .btn { min-height: 38px; border-radius: 2px; } .btn { font-size: 15px; font-weight: bold; } </style> </body> </html>
3_ inscription.php :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="author" content="NoS1gnal"/> <link href="https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/magnific-popup.min.css" rel="stylesheet" /> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> <title>Inscription</title> </head> <body> <div class="login-form"> <?php if(isset($_GET['reg_err'])) { $err = htmlspecialchars($_GET['reg_err']); switch($err) { case 'success': ?> <div class="alert alert-success"> <strong>Succès</strong> inscription réussie ! </div> <?php break; case 'password': ?> <div class="alert alert-danger"> <strong>Erreur</strong> mot de passe différent </div> <?php break; case 'email': ?> <div class="alert alert-danger"> <strong>Erreur</strong> email non valide </div> <?php break; case 'email_length': ?> <div class="alert alert-danger"> <strong>Erreur</strong> email trop long </div> <?php break; case 'pseudo_length': ?> <div class="alert alert-danger"> <strong>Erreur</strong> pseudo trop long </div> <?php case 'already': ?> <div class="alert alert-danger"> <strong>Erreur</strong> compte deja existant </div> <?php } } ?> <form action="inscription_traitement.php" method="post"> <h2 class="text-center">Inscription</h2> <div class="form-group"> <input type="text" name="pseudo" class="form-control" placeholder="Pseudo" required="required" autocomplete="off"> </div> <div class="form-group"> <input type="email" name="email" class="form-control" placeholder="Email" required="required" autocomplete="off"> </div> <div class="form-group"> <input type="password" name="password" class="form-control" placeholder="Mot de passe" required="required" autocomplete="off"> </div> <div class="form-group"> <input type="password" name="password_retype" class="form-control" placeholder="Re-tapez le mot de passe" required="required" autocomplete="off"> </div> <div class="form-group"> <button type="submit" class="btn btn-primary btn-block">Inscription</button> </div> </form> </div> <style> .login-form { width: 340px; margin: 50px auto; } .login-form form { margin-bottom: 15px; background: #f7f7f7; box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3); padding: 30px; } .login-form h2 { margin: 0 0 15px; } .form-control, .btn { min-height: 38px; border-radius: 2px; } .btn { font-size: 15px; font-weight: bold; } </style> </body> </html>
4_ inscription_traitement.php :
<?php require_once : 'config.php'; if(!empty($_POST['pseudo']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['password_retype'])) { $check = $bdd->prepare('SELECT pseudo, email, password FROM users WHERE email = ?'); $check->execute(array($email)); $data = $check->fetch(); $row = $check->rowCount(); $email = strtolower($email); $pseudo = htmlspecialchars($_POST['pseudo']); $email = htmlspecialchars($_POST['email']); $password = htmlspecialchars($_POST['password']); $password_retype = htmlspecialchars($_POST['password_retype']); if($row == 0){ if(strlen($pseudo) <= 100){ if(strlen($email) <= 100){ if(filter_var($email, FILTER_VALIDATE_EMAIL)){ if($password == $password_retype){ $cost = ['cost' => 12]; $password = password_hash($password, PASSWORD_BCRYPT, $cost); $ip = $_SERVER['REMOTE_ADDR']; $insert = $bdd->prepare('INSERT INTO user (pseudo, email, password, ip, token) VALUES (:pseudo, :email, :password, :ip, :token)'); $insert->execute(array( 'pseudo' => $pseudo, 'email' => $email, 'password' => $password, 'ip' => $ip, 'token' => bin2hex(openssl_random_pseudo_bytes(64)) )); header('Location:inscription.php?reg_err=success'); die(); }else{ header('Location: inscription.php?reg_err=password'); die();} }else{ header('Location: inscription.php?reg_err=email'); die();} }else{ header('Location: inscription.php?reg_err=email_length'); die();} }else{ header('Location: inscription.php?reg_err=pseudo_length'); die();} }else{ header('Location: inscription.php?reg_err=already'); die();} } ?>
5_ connexion.php :
<?php session_start(); // Démarrage de la session require_once 'config.php'; if(!empty($_POST['email']) && !empty($_POST['password'])) // Si il existe les champs email, password et qu'il sont pas vident { // Patch XSS $email = htmlspecialchars($_POST['email']); $password = htmlspecialchars($_POST['password']); $email = strtolower($email); // email transformé en minuscule // On regarde si l'utilisateur est inscrit dans la table utilisateurs $check = $bdd->prepare('SELECT pseudo, email, password, token FROM user WHERE email = ?'); $check->execute(array($email)); $data = $check->fetch(); $row = $check->rowCount(); // Si > à 0 alors l'utilisateur existe if($row > 0) { // Si le mail est bon niveau format if(filter_var($email, FILTER_VALIDATE_EMAIL)) { // Si le mot de passe est le bon if(password_verify($password, $data['password'])) { // On créer la session et on redirige sur landing.php $_SESSION['user'] = $data['token']; header('Location: landing.php'); die(); }else{ header('Location: index.php?login_err=password'); die(); } }else{ header('Location: index.php?login_err=email'); die(); } }else{ header('Location: index.php?login_err=already'); die(); } }else{ header('Location: index.php'); die();} // si le formulaire est envoyé sans aucune données ?>
6_ landing.php :
<?php session_start(); if(!isset($_SESSION['user'])) header('Location:index.php'); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="author" content="NoS1gnal"/> <link href="https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/magnific-popup.min.css" rel="stylesheet" /> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> <title>Bonjour</title> </head> <body> <h1> Bonjour ! <?php echo $_SESSION['user']; ?></h1> <a href = "deconnexion.php" class="btn btn-danger btn-lg">Deconnexion</a> </body> </html>
7_ deconnexion.php :
<?php session_start(); session_destroy(); header('Location:index.php'); die(); ?>
jordane45
Messages postés
38340
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 décembre 2024
4 716
17 oct. 2021 à 18:31
17 oct. 2021 à 18:31
Remplace le contenu de ton fichier config par le code que je t'ai donné.
Assure-toi également que le fichier est encodé en UTF-8 sans bom
Voir chapitre 1 du lien suivant :
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
Assure-toi également que le fichier est encodé en UTF-8 sans bom
Voir chapitre 1 du lien suivant :
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
J'ai remplacé votre fichier dans mon config.php et mon VisualStudioCode est bien en UTF-8.
Quand j'execute, toujours le meme message d'erreur.
Quand j'execute, toujours le meme message d'erreur.
jordane45
Messages postés
38340
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 décembre 2024
4 716
17 oct. 2021 à 19:38
17 oct. 2021 à 19:38
Peu importe que ton visual studio soit en UTF-8 ce que je te demande c'est de t'assurer que les fichiers qui s'y trouvent sont bien, eux, encodes en UTF-8.
Au pire, supprime ton fichier config.php puis recrée le via le code que je t'ai donné
Au pire, supprime ton fichier config.php puis recrée le via le code que je t'ai donné
Anicet14
Messages postés
3
Date d'inscription
dimanche 17 octobre 2021
Statut
Membre
Dernière intervention
17 octobre 2021
1
17 oct. 2021 à 19:08
17 oct. 2021 à 19:08
jordane45
Messages postés
38340
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 décembre 2024
4 716
17 oct. 2021 à 19:36
17 oct. 2021 à 19:36
Bien sûr que non puisque mon fichier test fonctionne
Anicet14
Messages postés
3
Date d'inscription
dimanche 17 octobre 2021
Statut
Membre
Dernière intervention
17 octobre 2021
1
17 oct. 2021 à 19:51
17 oct. 2021 à 19:51
jordane45
Messages postés
38340
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 décembre 2024
4 716
17 oct. 2021 à 20:31
17 oct. 2021 à 20:31
Le message est clair la table que tu essayes d'interroger dans ta requête SQL n'existe pas