Connection à ma bdd en PHP en fonctionne pas
Résolu
Snox5
Messages postés
1670
Statut
Contributeur
-
Snox5 Messages postés 1670 Statut Contributeur -
Snox5 Messages postés 1670 Statut Contributeur -
Bonjour CCM ^^,
J’héberge un petit site chez 000webhost, j'y fait sur mon site un formulaire d'inscription qui envoie via la méthode post les infos remplie sur le form sur un fichier register.php qui doit se charger de faire la connexion à ma bdd (PHPmyAdmin) et inscrire les infos dans ma bdd.
Site > soumission du formulaire > register.php ✖ base de donnée ✖
>>> Contenu du fichier register.php (les **** sont les infos censurées) :
PS: Désolé si je suis dans la mauvaise catégorie, j'ai pas webmaster: PHP. ^^
Merci ! ^^
@+++
Ceci n'est pas une signature.
J’héberge un petit site chez 000webhost, j'y fait sur mon site un formulaire d'inscription qui envoie via la méthode post les infos remplie sur le form sur un fichier register.php qui doit se charger de faire la connexion à ma bdd (PHPmyAdmin) et inscrire les infos dans ma bdd.
Site > soumission du formulaire > register.php ✖ base de donnée ✖
>>> Contenu du fichier register.php (les **** sont les infos censurées) :
<?php
//création variable après récuperation des valeur des champs
$pseudo = $_POST['pseudo'];
$email = $_POST['email'];
$password = $_POST['password'];
// hashage du mot de passe en sha512
$hash_pass= openssl_digest($password, 'sha512');
//tests
echo "le pseudo est : $pseudo <br/>";
echo "le mail est : $email <br/>";
echo "le mot de passe hashé est : $hash_pass";
//$bdd connection :
$bdd = new PDO('mysql:host=localhost;dbname=id43509_us****bs;charset=utf8mb4_unicode_ci', 'id43509_lemniscat', '******;D*****');
//Envoie des données
$bdd->exec("INSERT INTO Users(Nick, mail, pass) VALUES($pseudo, $email, hash_pass)");
?>
PS: Désolé si je suis dans la mauvaise catégorie, j'ai pas webmaster: PHP. ^^
Merci ! ^^
@+++
Ceci n'est pas une signature.
4 réponses
-
Bonjour,
Commence par activer la gestion des erreurs en PDO
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
En complément de ce que t'a indiqué LegranFilou .. ajoute des blocs TRY/CATCH pour intercepter (et afficher) les erreurs...(sinon ça ne sert à rien ! )
Ensuite... pense à récupérer PROPREMENT tes variables AVANT de les utiliser...
Regarde comment faire ici :
https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index
Pour finir ... il manque les quotes autour des variables ainsi que le "$" devant ta variable hash_passINSERT INTO Users(Nick, mail, pass) VALUES($pseudo, $email, hash_pass)
INSERT INTO Users(Nick, mail, pass) VALUES('$pseudo', '$email', '$hash_pass')
... le mieux serait tout de même d'utiliser les requêtes préparées pour éviter les soucis d'injection SQL.
Ton code devient donc :<?php //fichier ncxBdd.php // Fichier de connexion à la BDD try{ $bdd = new PDO('mysql:host=localhost;dbname=id43509_us****bs;charset=utf8mb4_unicode_ci', 'id43509_lemniscat', '******;D*****'); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); }
Ton fichier :<?php //Affichage des erreurs PHP error_reporting(E_ALL); //connexion à la bdd require_once "cnxBdd.php"; //Récupération "prorpre" des variables $pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL; $email = !empty($_POST['email']) ? $_POST['email'] : NULL; $password = !empty($_POST['password']) ? $_POST['password']: NULL; $hash_pass= openssl_digest($password, 'sha512'); //tests echo "le pseudo est : $pseudo <br/>"; echo "le mail est : $email <br/>"; echo "le mot de passe hashé est : $hash_pass"; if($pseudo && $email && $hash_pas ){ $sql = "INSERT INTO Users(Nick, mail, pass) VALUES(:pseudo, :email , :hash_pass)"; $datas = array(":pseudo"=>$pseudo , ":email"=>$email , ":hash_pass"=>$hash_pass); try{ $prep = $bdd->prepare($sql); $res = $prep->execute($datas); }catch(Exception $e){ echo "Erreur ! ".$e->getMessage(); } }
Cordialement,
Jordane-
Bonsoir Jordane45,
Tout d'abord, merci pour ta réponse.
A quoi correspond le fichier ncxBdd.php ?
J'ai tout mis dans mon fichier register.php qui doit récupérer les infos du formulaire et les inscrire dans la base.
J'apporte les modifs que tu m'as donné tout de suite et vois ce que ca donne.
Je débute en php...^^
+++ -
-
Re,
Mon code est bien dans un fichier à part, et pour les injections sql, je m'en inquiterai plus tard. ^^
Le nouveau code est donc :<?php //Affichage des erreurs PHP error_reporting(E_ALL); //création variable après récuperation des valeur des champs : $pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL; $email = !empty($_POST['email']) ? $_POST['email'] : NULL; $password = !empty($_POST['password']) ? $_POST['password']: NULL; $hash_pass= openssl_digest($password, 'sha512'); //test : echo "le pseudo est : $pseudo <br/>"; echo "le mail est : $email <br/>"; echo "le mot de passe hashé est : $hash_pass"; //variables de connexion : $dsn = 'mysql:dbname=id43******ubs;host=localhost;'; $user = 'id43****cat'; $bddpass = '150*******'; //connexion à la bdd : try{ $bdd = new PDO('$dsn', '$user', '$bddpass'); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); }catch(PDOException $e) { die('Erreur : ' . $e->getMessage());} //insertion des données : if($pseudo && $email && $hash_pas ){ $sql = "INSERT INTO Users(Nick, mail, pass) VALUES(:pseudo, :email , :hash_pass)"; $datas = array(":pseudo"=>$pseudo , ":email"=>$email , ":hash_pass"=>$hash_pass); try{ $prep = $bdd->prepare($sql); $res = $prep->execute($data); }catch(Exception $e){ echo "Erreur ! ".$e->getMessage();}} ?> -
-
-
-
Salut :)
C'est dans programmation : PHP mais je ne pense pas que ce soit trop grave :p
Je pense que tu dois mettre ta connexion à ta BDD au début du code donc quand tu fais <?php ta bdd /RESTE DE TON CODE/ ?>
Il me semble que c'est ça ^^ je ne suis pas sur :) -
du coup j'ai tenté d'autres choses, sans grands résultats :
<?php //création variable après récuperation des valeur des champs : $pseudo = $_POST['pseudo']; $email = $_POST['email']; $password = $_POST['password']; // hashage du mot de passe en sha512 : $hash_pass= openssl_digest($password, 'sha512'); //test : echo "le pseudo est : $pseudo <br/>"; echo "le mail est : $email <br/>"; echo "le mot de passe hashé est : $hash_pass"; //variables de connexion : $dsn = 'mysql:dbname=id43***ssubs;host=localhost;'; $user = 'id435*****iscat'; $bddpass = '1********'; //connexion à la bdd : $dbh = new PDO($dsn, $user, $bddpass); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //Envoie des données : $bdd->exec('INSERT INTO Users(Nick, mail, pass) VALUES($pseudo, $email, hash_pass)'); //fermeture de la connexion : $dbh = null; ?>
Ceci n'est pas une signature. -
Salut,
YES ! Ca a fonctionné ! ;D Merci beaucoup pour ton aide Jordane45 ! ^^
Voilà le code qui fonctionne :<?php //Affichage des erreurs PHP error_reporting(E_ALL); //création variable après récuperation des valeur des champs : $pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL; $email = !empty($_POST['email']) ? $_POST['email'] : NULL; $password = !empty($_POST['password']) ? $_POST['password']: NULL; $hash_pass= openssl_digest($password, 'sha512'); //test : echo "le pseudo est : $pseudo <br/>"; echo "le mail est : $email <br/>"; echo "le mot de passe hashé est : $hash_pass"; //variables de connexion : $dsn = 'mysql:dbname=id4*******bs;host=localhost;'; $user = 'id43*******cat'; $bddpass = '********'; //connexion à la bdd : try{ $bdd = new PDO($dsn, $user, $bddpass); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); }catch(PDOException $e) { die('Erreur : ' . $e->getMessage());} //insertion des données : if($pseudo && $email && $hash_pass ){ $sql = "INSERT INTO Users(Nick, mail, pass) VALUES(:pseudo, :email , :hash_pass)"; $data = array(":pseudo"=>$pseudo , ":email"=>$email , ":hash_pass"=>$hash_pass); try{ $prep = $bdd->prepare($sql); $res = $prep->execute($data); }catch(Exception $e){ echo "Erreur ! ".$e->getMessage();}} ?>
Je passe en résolu,
Bon Dimanche ! @+++