Problème de code php
xooit21
Messages postés
99
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
quand j'essaye de m'inscrire sur mon site j'ai un message d'erreur qui s'affiche:
Fatal error: Uncaught Error: Call to a member function prepare() on string in /volume1/web/inscription.php on line 33 Error: Call to a member function prepare() on string in /volume1/web/inscription.php on line 33 Call Stack: 0.0003 354192 1. {main}() /volume1/web/inscription.php:0
donc j'ai regardé mon code mais je trouve pas l'erreur, voici mon code php:
quand j'essaye de m'inscrire sur mon site j'ai un message d'erreur qui s'affiche:
Fatal error: Uncaught Error: Call to a member function prepare() on string in /volume1/web/inscription.php on line 33 Error: Call to a member function prepare() on string in /volume1/web/inscription.php on line 33 Call Stack: 0.0003 354192 1. {main}() /volume1/web/inscription.php:0
donc j'ai regardé mon code mais je trouve pas l'erreur, voici mon code php:
<?php //connection a la base de donnée $bdd = 'mysql:dbname=espace_membre;host=127.0.0.1'; $user = 'root'; $password = 'root'; // fin de connection // dés qu'on clik sur envoyer il faut que les champs soit remplis // if (isset($_POST['envoyer'])) { if (!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])) { /////// securisation anti-java //////// $pseudo = htmlspecialchars($_POST['pseudo']); $mail = htmlspecialchars($_POST['mail']); $mail2 = htmlspecialchars($_POST['mail2']); $mdp = sha1($_POST['mdp']); $mdp2 = sha1($_POST['mdp2']); /////// fin securisation anti-java //////// $pseudolength = strlen($pseudo); if ($pseudolength <= 255) { // Si mail est egale a mail2 // if ($mail == $mail2) { // verification si l'adresse email existe vraiment // if (filter_var($mail, FILTER_VALIDATE_EMAIL)) { $reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ? "); $reqmail->execute(array($mail)); $mailexist = $reqmail->rowCount(); if ($mailexist == 0) { if ($mdp == $mdp2) { $insernbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)"); $insernbr -> execute(array($pseudo, $mail, $mdp)); $erreur = "Votre compte a bien ete crée!<br><a href=\"connection.php\">Me connecter</a> "; } else { $erreur = "Votre mot de passse ne corespond pas!"; } } else { $erreur = "adresse email deja utilisé!"; } } else { $erreur = "Votre adresse email n'est pas valide"; } } else { $erreur = "Votre adresse email ne corespond pas!"; } } else { $erreur = "Votre pseudo ne doit pas depassé 255 caractére!"; } } else { $erreur = "Tous les champs doivent être renpli!"; } } ?>
A voir également:
- Problème de code php
- Code ascii - Guide
- Code de déverrouillage oublié - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
3 réponses
Bonjour,
Tu as écris :
.... il te manque quelques lignes de code....
Applique ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Tu as écris :
//connection a la base de donnée $bdd = 'mysql:dbname=espace_membre;host=127.0.0.1'; $user = 'root'; $password = 'root'; // fin de connection
.... il te manque quelques lignes de code....
Applique ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
bonjour,
Quand je remplace par ce code:
sa me dis:
Erreur : SQLSTATE[HY000] [1045] Accès refusé pour l'utilisateur: 'root'@'@localhost' (mot de passe: OUI)
Quand je remplace par ce code:
try{
$bdd = new PDO('mysql:host=localhost;
dbname=espace_membre; 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());
}
sa me dis:
Erreur : SQLSTATE[HY000] [1045] Accès refusé pour l'utilisateur: 'root'@'@localhost' (mot de passe: OUI)
Cela signifie que, dans ta table, tu as un champ nommé "avatar" ...
et que, comme le dit le message d'erreur qu'il suffit de lire....... il ne possède pas de valeur par défaut (default value).
Donc soit tu revois la définition de ce champ dans ta bdd ... soit tu l'ajoutes dans ta requête INSERT.
De plus.. attention.
Désormais on utilise la fonction password_verify pour stocker les password et les vérifier :
https://www.php.net/manual/fr/function.password-verify.php
et donc, pour encoder le password (celui que tu stockes dans ta bdd) : http://php.net/manual/fr/function.password-hash.php
Voici un exemple de code : https://forums.commentcamarche.net/forum/affich-34340900-login-password-php#7
.
et que, comme le dit le message d'erreur qu'il suffit de lire....... il ne possède pas de valeur par défaut (default value).
Donc soit tu revois la définition de ce champ dans ta bdd ... soit tu l'ajoutes dans ta requête INSERT.
De plus.. attention.
Désormais on utilise la fonction password_verify pour stocker les password et les vérifier :
https://www.php.net/manual/fr/function.password-verify.php
et donc, pour encoder le password (celui que tu stockes dans ta bdd) : http://php.net/manual/fr/function.password-hash.php
Voici un exemple de code : https://forums.commentcamarche.net/forum/affich-34340900-login-password-php#7
.