Problème de code php

xooit21 Messages postés 109 Statut Membre -  
jordane45 Messages postés 30426 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!";
   }
  }  
 ?>


3 réponses

  1. xooit21 Messages postés 109 Statut Membre
     
    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
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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
  2. xooit21 Messages postés 109 Statut Membre
     
    ha oui merci heuuu

    maintenant j'ai ça?

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