Problème BDD
Résolu/Fermé
NyriaOff
Messages postés
19
Date d'inscription
mercredi 20 février 2019
Statut
Membre
Dernière intervention
10 mai 2019
-
Modifié le 19 mars 2019 à 00:13
NyriaOff Messages postés 19 Date d'inscription mercredi 20 février 2019 Statut Membre Dernière intervention 10 mai 2019 - 4 avril 2019 à 20:34
NyriaOff Messages postés 19 Date d'inscription mercredi 20 février 2019 Statut Membre Dernière intervention 10 mai 2019 - 4 avril 2019 à 20:34
7 réponses
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
18 mars 2019 à 21:29
18 mars 2019 à 21:29
Bonjour
Je doute que le Host soit localhost...
Verifies les informations de la bdd...
Je doute que le Host soit localhost...
Verifies les informations de la bdd...
NyriaOff
Messages postés
19
Date d'inscription
mercredi 20 février 2019
Statut
Membre
Dernière intervention
10 mai 2019
Modifié le 20 mars 2019 à 19:42
Modifié le 20 mars 2019 à 19:42
Bonjour, je ne pensai pas que la réponse serait si rapide désoler pour le retard : J'ai sur www.000webhost.com des informations concernant la BDD que je vais vous transmettre par capture d'écran : Il est possible que je me sois tromper mais pourtant le site en ligne communique avec la BDD mais ne veut pas recevoir d'informations. Je vais prendre connaissance de la page renseignée et je verrai si elle résolue mon problème merci.
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
20 mars 2019 à 19:52
20 mars 2019 à 19:52
Pense à désactiver les redirections le temps des tests.. sinon tu ne verras pas les éventuels messages d'erreur lors de l'exectuion de ta requete d'insert
Je te précise également qu'en PDO, il ne faut pas utiliser le RowCount sur une requête SELECT...
A la place on fera un count (sur un fetchAll par exemple)
$sql = "INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)"; $datas = array($pseudo, $mail, $mdp); try{ $insertmbr = $bdd->prepare($sql); $insertmbr->execute($datas); //$erreur = header('Location: inscription_check.php'); //mis en commentaire le temps des tests }catch(Exception $e){ echo " Erreur !" .$e->getMessage(); echo "<br> Datas :"; print_r($datas); }
Je te précise également qu'en PDO, il ne faut pas utiliser le RowCount sur une requête SELECT...
A la place on fera un count (sur un fetchAll par exemple)
$sql = "SELECT * FROM membres WHERE mail = ?"; $datas = array($mail); try{ $insertmbr = $bdd->prepare($sql); $insertmbr->execute($datas); $reqmail = $insertmbr->fetchAll(); // on stocke le resultat dans un array $mailexist = !empty($reqmail) ? count($reqmail) : NULL; // on fait un count dessus }catch(Exception $e){ echo " Erreur !" .$e->getMessage(); echo "<br> Datas :"; print_r($datas); }
NyriaOff
Messages postés
19
Date d'inscription
mercredi 20 février 2019
Statut
Membre
Dernière intervention
10 mai 2019
Modifié le 1 avril 2019 à 22:17
Modifié le 1 avril 2019 à 22:17
Bonjour, j'ai simplifier le code :
Le code HTML reste le même et pourtant aucune information est perçu par la base de données.
<?php $bdd = new PDO('mysql:host=localhost;dbname=******', '*****', '*****'); if(isset($_POST['forminscription'])) { $pseudo = htmlspecialchars($_POST['pseudo']); $mail = htmlspecialchars($_POST['mail']); $mail2 = htmlspecialchars($_POST['mail2']); $mdp = sha1($_POST['mdp']); $mdp2 = sha1($_POST['mdp2']); $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)"); $insertmbr->execute(array($pseudo, $mail, $mdp)); //$erreur = header('Location: inscription_check.php'); } ?>
Le code HTML reste le même et pourtant aucune information est perçu par la base de données.
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
1 avril 2019 à 16:57
1 avril 2019 à 16:57
Comme je te l'ai déjà indiqué .... tu dois gérer les éventuelles erreurs PDO !
Merci d'appliquer ceci à ton code :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Merci d'appliquer ceci à ton code :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
1 avril 2019 à 16:58
1 avril 2019 à 16:58
Au passage.... le htmlspecialchar ne doit s'utiliser que pour de l'affichage... Aucunement lors de l'insertion en bdd.
Autre point... le SHA1 n'est plus utilisé pour la géstion des password (pas assez sécurisé ).
Désormais, on utiliser les fonctions password_hash et password_verify
Autre point... le SHA1 n'est plus utilisé pour la géstion des password (pas assez sécurisé ).
Désormais, on utiliser les fonctions password_hash et password_verify
NyriaOff
Messages postés
19
Date d'inscription
mercredi 20 février 2019
Statut
Membre
Dernière intervention
10 mai 2019
Modifié le 1 avril 2019 à 22:15
Modifié le 1 avril 2019 à 22:15
J'ai appliquer le code donné par le lien et la page se charge normalement à moins que j'ai merder dans l'intégration du code, le voici après l'intégration (htmlspecialchar à été enlevé mais pas le SHA1 car password_hash ne marche pas pour moi) :
<?php
try{
$bdd =new PDO('mysql:host=localhost;
dbname=**********; charset=utf8', '*******_projet', '******');
// 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());
}
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
$bdd = new PDO('mysql:host=localhost;dbname=i******', '*******projet', '*****');
if(isset($_POST['forminscription']))
{
$pseudo = $_POST['pseudo'];
$mail = $_POST['mail'];
$mail2 = $_POST['mail2'];
$mdp = sha1($_POST['mdp']);
$mdp2 = sha1($_POST['mdp2']);
$insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)");
$insertmbr->execute(array($pseudo, $mail, $mdp));
//$erreur = header('Location: inscription_check.php');
}
?>
PS : La version PHP du localhost était 5 alors que celle de 000webhost est 7.1 et celle de phpmyadmin sur 000webhost est 7.3.2. Je pense que des bugs peuvent provenir d'ici aussi mais je ne sais pas comment faire si c'est le cas :
1. Changer la version sur 000webhost pour celle de phpMyAdmin?
2. Changer la version sur 000webhost pour celle de localhost?
3. Réécrire le programme avec des variables plus récentes ?
<?php
try{
$bdd =new PDO('mysql:host=localhost;
dbname=**********; charset=utf8', '*******_projet', '******');
// 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());
}
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
$bdd = new PDO('mysql:host=localhost;dbname=i******', '*******projet', '*****');
if(isset($_POST['forminscription']))
{
$pseudo = $_POST['pseudo'];
$mail = $_POST['mail'];
$mail2 = $_POST['mail2'];
$mdp = sha1($_POST['mdp']);
$mdp2 = sha1($_POST['mdp2']);
$insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)");
$insertmbr->execute(array($pseudo, $mail, $mdp));
//$erreur = header('Location: inscription_check.php');
}
?>
PS : La version PHP du localhost était 5 alors que celle de 000webhost est 7.1 et celle de phpmyadmin sur 000webhost est 7.3.2. Je pense que des bugs peuvent provenir d'ici aussi mais je ne sais pas comment faire si c'est le cas :
1. Changer la version sur 000webhost pour celle de phpMyAdmin?
2. Changer la version sur 000webhost pour celle de localhost?
3. Réécrire le programme avec des variables plus récentes ?
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
1 avril 2019 à 18:01
1 avril 2019 à 18:01
ou la lalala ....
1 - Je t'ai déjà dit d'utiliser les BALISES DE CODE pour poster ton code ........ ce n'est pas clair ?? Oo
2 - Tu as deux connexion à ta bdd dans le même code
3 - L'affichage des erreurs php se placent AU DEBUT du code (au tout début ! )
J'attendrai que tu aies déjà fait ces corrections avant de regarder le reste....
NB: password_hash fonctionne parfaitement....... sur quoi te bases tu pour dire qu'il ne fonctionne pas toujours correctement ??
NB² : Oui la version de php compte... et la 7.x est trois fois plus performante.... donc c'est bien celle la qu'il faut utiliser.
1 - Je t'ai déjà dit d'utiliser les BALISES DE CODE pour poster ton code ........ ce n'est pas clair ?? Oo
2 - Tu as deux connexion à ta bdd dans le même code
3 - L'affichage des erreurs php se placent AU DEBUT du code (au tout début ! )
J'attendrai que tu aies déjà fait ces corrections avant de regarder le reste....
NB: password_hash fonctionne parfaitement....... sur quoi te bases tu pour dire qu'il ne fonctionne pas toujours correctement ??
NB² : Oui la version de php compte... et la 7.x est trois fois plus performante.... donc c'est bien celle la qu'il faut utiliser.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
NyriaOff
Messages postés
19
Date d'inscription
mercredi 20 février 2019
Statut
Membre
Dernière intervention
10 mai 2019
1 avril 2019 à 17:52
1 avril 2019 à 17:52
(Le message précédant était fossé puisque je n'avais pas changé les informations de connexion de la BDD pour voir si il y avait des bugs)
NyriaOff
Messages postés
19
Date d'inscription
mercredi 20 février 2019
Statut
Membre
Dernière intervention
10 mai 2019
Modifié le 4 avril 2019 à 11:04
Modifié le 4 avril 2019 à 11:04
Bonjour,
1 - Ok sorry.
2 - C'est fait.
3 - Voici le code PHP (où si c'est la bonne variable) à été mise en premier :
Pour le reste je préfère pour l'instant rester sur un simple sha1 que je maitrise que autre chose et 000webhost à sa version de PHP en 7 donc c'est à moi de changer le code si il y en a besoin.
1 - Ok sorry.
2 - C'est fait.
3 - Voici le code PHP (où si c'est la bonne variable) à été mise en premier :
<?php ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); try{ $bdd =new PDO('mysql:host=localhost; dbname=xxxxx; charset=utf8', 'xxxxxxx', 'xxxxxx'); // 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()); } if(isset($_POST['forminscription'])) { $pseudo = $_POST['pseudo']; $mail = $_POST['mail']; $mail2 = $_POST['mail2']; $mdp = sha1($_POST['mdp']); $mdp2 = sha1($_POST['mdp2']); $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)"); $insertmbr->execute(array($pseudo, $mail, $mdp)); //$erreur = header('Location: inscription_check.php'); } ?>
Pour le reste je préfère pour l'instant rester sur un simple sha1 que je maitrise que autre chose et 000webhost à sa version de PHP en 7 donc c'est à moi de changer le code si il y en a besoin.
NyriaOff
Messages postés
19
Date d'inscription
mercredi 20 février 2019
Statut
Membre
Dernière intervention
10 mai 2019
>
Utilisateur anonyme
4 avril 2019 à 17:39
4 avril 2019 à 17:39
Ah pardon excusez moi.
Utilisateur anonyme
>
NyriaOff
Messages postés
19
Date d'inscription
mercredi 20 février 2019
Statut
Membre
Dernière intervention
10 mai 2019
4 avril 2019 à 18:31
4 avril 2019 à 18:31
Tu n'as pas à t'excuser, ce n'est pas moi qui subirai les conséquences, c'est toi. Tu es légalement responsable si quelqu'un de mal intentionné utilise tes identifiants à des fins illégales.
Tu devrais changer de mot de passe rapidement, et mettre la connexion dans un fichier inclus, histoire que tes identifiants n'apparaissent jamais quand tu montres ton code.
Tu devrais changer de mot de passe rapidement, et mettre la connexion dans un fichier inclus, histoire que tes identifiants n'apparaissent jamais quand tu montres ton code.
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
4 avril 2019 à 17:54
4 avril 2019 à 17:54
Et le try/catch au niveau de l'exécution de la requête ... il est où ?
ça pourrait permettre de savoir ce qui cloche...
De plus, peux tu ajouter un print_r($_POST); dans ton IF voir si il s'affiche et voir ce qu'il contient exactement...
ça pourrait permettre de savoir ce qui cloche...
De plus, peux tu ajouter un print_r($_POST); dans ton IF voir si il s'affiche et voir ce qu'il contient exactement...
NyriaOff
Messages postés
19
Date d'inscription
mercredi 20 février 2019
Statut
Membre
Dernière intervention
10 mai 2019
4 avril 2019 à 20:34
4 avril 2019 à 20:34
C'est bon j'ai trouvé la solution au problème que je n'ai pas trop compris mais bon : En localhost tout allait bien et pourtant sur 000webhost, la colonne "Avatar" de ma base de donnée n'étant pas rempli au moment de l'inscription, la BDD ne se remplissait pas (Je fais appelle à celle-ci dans la modification du profil mais pas dans l'inscription), j'ai pu trouvé le bug grâce à l'affichage de celui-ci avec la variable donné au-dessus. Bref merci encore à vous pour votre précieuse aide !
18 mars 2019 à 21:31
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs