Pb connexion à BDD via formulaire html + PHP
Résolu/Ferméarscy Messages postés 173 Date d'inscription dimanche 26 janvier 2014 Statut Membre Dernière intervention 5 octobre 2023 - 30 juil. 2022 à 18:24
- Pb connexion à BDD via formulaire html + PHP
- Gmail connexion - Guide
- Hotmail connexion - Guide
- Facebook connexion - Guide
- Editeur html - Télécharger - HTML
- Formulaire de contact le bon coin introuvable ✓ - Forum Réseaux sociaux
2 réponses
30 juil. 2022 à 17:33
Bonjour,
Pour commencer, l'instruction htmlspecialchar ne sert que pour de l'affichage .. en aucun cas pour "traiter" les données.
Ensuite, une erreur 500 indique une erreur côté serveur.
Comme tu es en "local" sur ton ordi .. je ne vois pas l'interet d'avooir modifié les infos de connexion à ta bdd pour les poster sur le forum.. Difficile pour nous de savoir si tu as mis les bonnes infos.
De plus, au lieu de répéter le code de connexion sur chacune de tes pages, stocke le dans un fichier à part que tu n'aura qu'à inclure dans tes pages. Ainsi, si tu modifies le user ou l'adresse de la bdd tu n'auras à le faire qu'à un seul endroit..
Donc:
<?php //Fichier cnxBdd.php : // Fichier de connexion à la bdd .. pas besoin de répéter ce code X fois sur ton site.. // il suffirat d'inclure le fichier là où tu en as besoin.. $mysqli = new mysqli("localhost","my_user","my_password","my_db"); // Check connection if ($mysqli -> connect_errno) { echo "Erreur de connexion à la bdd : " . $mysqli -> connect_error; exit(); }
Puis ton fichier devient :
<?php error_reporting(E_ALL); // Affichage des erreurs PHP //démarrage sessions session_start(); //connexion à la bdd require_once "cnxBdd.php"; //récupération PROPRE des variables AVANT de les utiliser // pour cela, j'utilise un ternaire (sorte de if/else) et j'en profite pour supprimer // les éventuels espaces superflus $pseudo = !empty($_POST['pseudo']) ? trim($_POST['pseudo']) : NULL; $mdp = !empty($_POST['mdp']) ? trim($_POST['mdp']) : NULL; //si il y a un user et un password.. if($pseudo && $mdp ){ //à partir d'ici je pose des variables et des requêtes pour accéder aux infos de la BDD //... //on vérifie si l'utilisateur existe $sql = "SELECT * FROM myTable WHERE pseudo = ? "; $stmt = $mysqli->prepare($sql); $stmt->bind_param("s", $pseudo); $stmt->execute(); $result = $stmt->get_result(); //L'utilsiateur a été trouvé .. if($result->num_rows > 0) { // ensuite on compare le mot de passe hashé en bdd avec celui transmis par le formulaire // (oui.. on ne stocke JAMAIS un mot de passe en clair en bdd.. ) // Si tu ne sais pas comment faire, je t'invite à regarder la documentation des fonction password_hash et password_verify }else { echo "aucun utilisateur trouvé avec ce pseudo"; } } ?>
30 juil. 2022 à 18:24
Je retiendrai que la centralisation limite l'erreur dans mon cas de figure : la connexion à la BDD passe enfin_ j'ai une faute plus bas à présent mais ça devrait être réglé en restant méthodique.
Il me reste des interrogations concernant l'aspect gestion de la sécurité, mais à traiter dans un autre topic je suppose.
Merci pour les recommandations!
30 juil. 2022 à 18:02
Merci pour les éléments de réponse,
je prends note pour désigner un fichier à part pour stocker les éléments de connexion à la BDD, c'est effectivement bien plus pertinent que d'avoir à changer les paramètres page par page (un petit pas de plus dans l'apprentissage c'est cool).
Concernant le fait d'avoir modifié les éléments de connexion c'est simple : si je suis en mesure de traduire ce que j'ai écrit, c'est qu'à priori j'ai placé les bonnes informations au bon endroit (notamment pas de confusion entre le nom de connexion et le nom de la BDD).
Comme je babille encore dans le domaine qui m'amène à poser mes questions, un certain nombre de fonctions me sont inconnues en php, mais ça me donnera l'occasion d'aller creuser un brin du coup.
Ça n'explique pas mon souci pour l'instant, mais en restructurant un peu j'y verrai peut être un peu plus clair.
Affaire à suivre