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   -
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:

<?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:

3 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

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

0
xooit21 Messages postés 99 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour,
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)
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Ce qui est déjà mieux.
Cela signifie que tes identifiants ne sont pas bons !

Tu es en local ou sur un serveur ?
Si tu es en local ... essaye de laisser vide ("") le password
Si tu es sur un serveur.... il faut que tu utilises les identifiants qui t'ont été fournis pas ton hébergeur.
0
xooit21 Messages postés 99 Date d'inscription   Statut Membre Dernière intervention  
 
ha oui merci heuuu

maintenant j'ai ça?

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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

.
0