Besoin daide

queenb -  
jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, je suis débutant en php et j'essaie d'afficher la photo de l'utilisateur qui se connecte a mon site et j'arrive pas... ci dessous le le message d'erreur qu'on met

Parse error: syntax error, unexpected ''"'' (T_CONSTANT_ENCAPSED_STRING) in C:\xampp\htdocs\MES ARTICLES\BLOGSUITE\INDEX.php on line 63

voici ma ligne 63
<?php echo((isset($_SESSION['PROFILE']))?('<img src="images/'.$_SESSION['avatar']'"'):""); ?>,<br />
Bienvenue sur notre site.<br />

11 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    <?php echo isset($_SESSION['PROFILE']) ? '<img src="images/'.$_SESSION['avatar'].'"' : "" ; ?>
    
    Bienvenue sur notre site.<br /> 
    


    PS: A l'avenir, merci d'utiliser les BALISES DE CODE pour poster du code sur le forum
    Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

    0
  2. queenb
     
    MERCI JORDAN DE MAVOIR REPONDU MAIS il ne recupere tjr pas la photo de lutilisateur qui sy connecte ... ci dessous mon code php et html

    
                     <?php 
      
    
      $bdd = new PDO('mysql:host=127.0.0.1;dbname=projet', 'root', '');
    
     if(isset($_POST['submit'])){
       
      $pseudoconnect = htmlspecialchars($_POST['psdoconnect']);
      $mdpconnect = sha1($_POST['passconnect']);
    
          if(!empty($pseudoconnect) AND !empty($mdpconnect))
          {
    
            // On va chercher si ces données existes dans la bd
    
                    $requser = $bdd->prepare("SELECT * FROM espace_membres WHERE pseudo = '".$pseudoconnect."' AND mot_de_passe = '".$mdpconnect."'");
                    $requser->execute(array($pseudoconnect, $mdpconnect));
                   $userexist = $requser->rowCount();
    
            if($userexist == 1){
    
              $userinfo = $requser->fetch();
      
              session_start();
       $_SESSION['PROFILE'] = $requser;
       $_SESSION['pseudo'] = $userinfo['pseudo'];
       $_SESSION['avatar'] = $userinfo['avatar'];
    
       ?>
       bienvenue "<?php echo htmlentities($userinfo['pseudo']); ?>" :
       <table style="width:500px;">
          <tr>
              <td><?php
                   if($userinfo['avatar']!=''){
          echo '<img src="'.htmlentities($userinfo['avatar'], ENT_QUOTES, 'UTF-8').'" alt="Image Perso" style="max-width:100px;max-height:100px;" />';
       }
       else
       {
          echo 'Cet utilisateur n\'a pas d\'image perso.';
       }
       ?></td>
              <td class="right"><h1><?php echo htmlentities($userinfo['pseudo'], ENT_QUOTES, 'UTF-8'); ?></h1>
               
           </tr>
       </table>
       <?php
          }
          else
          {
             echo 'Cet utilisateur n\'existe pas.';
          }
       }
    
       header("Location: INDEX.php");
     }
       else
      {
     $erreur = "Mauvais pseudo ou mot de passe !";
      }
     
     ?>         
                    
                    
    


    mon formulaire

    <form action="connexion.php" method="post">
    
    <h2 style="color:#fff;">Se connecter</h2>
    
    <input type="text" name="psdoconnect" placeholder="pseudo" required><br><br>
    
    <input type="password" name="passconnect" placeholder="Password" required /><br /><br />
    
    <a href=""><input type="submit" value="se connecter" name="submit" /></a><br /><br />
    
    
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Quel est le rapport entre ton problème du départ et le code que tu nous montres maintenant ?
      Le code ne correspond pas...

      de plus il y a quelques soucis dans ton code... J'y reviendrai plus tard.
      Pour commencer prends bonne note des conseils donnés dans les liens suivant :

      https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

      https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

      .
      0
      1. Queenb > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Ok je texplik mon pb .. j'ai conçu un petit site de e-commerce ou, pour faire des achats il faut être membre sur le site.. j'ai créer le formulaire d'inscription ainsi que la base de donnée et l'inscription marche. le soucis de situe au niveau de la connexion. Lorsque l'utilisateur se connecte après s'être inscrit j'aimerai lui afficher sa photo et un message de bienvenue.. je n'arrive pas a le faire depuis
        0
  3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Donc, comme je le disais.. il y a pleins de soucis dans ton code.

    - rowCount(); ne s'utilise JAMAIS sur une requête de type 'select' ( à la place on fera plutôt un fetchAll sur le résultat de la requête puis un count )

    -Tu n'as pas activé l'affichage des erreurs PHP

    - Tu n'as pas activé les erreurs PDO

    - Tu ne gères pas les éventuelles erreurs PDO ( en utilisant des blocs TRY/CATCH)

    - ton
    header("Location
    ne peut pas fonctionner puisque tu as déjà affiché du texte sur ta page. Cela devrait te provoquer une erreur...

    - Tu utilises le sha1 pour "crypter" tes mots de passe.... alors que ce n'est plus du tout sécurisé ( à la place, il faut utiliser les fonctions php : password_hash et password_verify )

    - On n'utilise jamais htmlspecialchars pour le traitement des données en BDD .. ça ne s'utilise QUE pour l'affichage.

    - Tu ne devrais pas avoir à utiliser de htmlentities ENT_QUOTES, 'UTF-8' .. je t'invite à appliquer le contenu de ce lien : https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8

    Bref, commence par appliquer l'ensemble des conseils donnés dans les liens
    (je te les redonne au cas où )
    https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

    https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

    Puis reviens nous voir avec ton code modifié si tu rencontres toujours des soucis.

    0
  4. queenb
     
    jordan.. jai essayer suivre les étapes que vous mavez donnée en reprenant tout depuis le début. mais là mes données ne vont plus la base de donnée on me dit m MySQL a retourné un résultat vide (c'est à dire aucune ligne). ci dessous mes codes

    formulaire
    <form action="inscription.php" method="post" enctype="multipart/form-data">
    
        <center><h2 style="color: green;">S'inscrire</h2></center>
    
        <input type="text" name="pseudo" placeholder="pseudo" required><br>
    
        <input type="email" name="email" placeholder="email" required><br>
    
        <input type="password" name="mdp" placeholder="Password" required><br>
    
        <input type="password" name="cmdp" placeholder="repeatPassword" required><br>
    
        <input type="contact"  name="numero" placeholder="contact"><br>
    
     <input type="submit" value="s'inscrire" name="register" class="btn btn-block btn-primary"><br><br>
    
    


    code insertion php

    <?php
        require_once 'connect_bd.php';
    
        if (isset($_POST['register'])){
          
             if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mdp']) AND !empty($_POST['cmdp']) AND !empty($_POST['numero']))
           {
             $errors=array();
                   
                //test sur le pseudo
    
                  if(empty($_POST['pseudo']) || !preg_match('/^[a-zA-Z0-9]+$/',$_POST['pseudo']))
                       {
                         $errors['pseudo']="votre pseudo n'est pas valide(alphanumerique)";
                        }
                        else {
                          $req = $pdo->prepare('SELECT id FROM espace_membres WHERE pseudo = ?');
                          $req->execute([$_POST['pseudo']]);
                          $user = $req->fetch();
                           if ($user)
                            {
                            $errors['pseudo'] = 'ce pseudo est deja pris';
                           } 
                        }
    
    
                  // test sur email
    
                  if(empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
                       {
                         $errors['email'] = "email invalide";
                        }
                        else
                        {
                          $req = $pdo->prepare('SELECT id FROM espace_membres WHERE email = ?');
                          $req->execute([$_POST['email']]);
                          $user = $req->fetch();
                           if ($user)
                            {
                            $errors['email'] = 'cet email existe deja pour un autre compte';
                           } 
                        }
                                    //test sur le mot de passe:
                                    if(empty($_POST['mdp']) || $_POST['mdp'] != $_POST['cmdp'])
                                    {
                                      $errors['mdp']="entrer un mot de passe valide";
                                     }
                              
                        if (empty($errors)) {
                          $requete = $pdo->prepare("INSERT INTO espace_membres SET pseudo = ?, email = ?, mot_de_passe = ?, contact = ?"); 
                  
                          //cryptage du mot de passe
                          $mdp = password_hash($_POST['mdp'], PASSWORD_BCRYPT);
    
                          //execution de la requete
                          $requete->execute([$_POST['pseudo'], $_POST['email'], $mdp, $_POST['numero']]);
                          die('felicitation votre compte a bien été créer');
                        }           
                      }  
          }      
       ?>
    


    ma page de connexion a la bd
    <?php 
    
       error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);
    
        // If form submitted, insert values into the database.
        try{
          $bdd = new PDO('mysql:host=127.0.0.1;dbname=projet', '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_OBJ);
          } 
           catch(PDOException $e) {
              echo 'connection failed: ' or die('Erreur : ' . $e->getMessage());
          }
          ?>
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Il manque encore la récupération des variables.. et ton code mérite une petite refonte.

    Je te propose :

    Créé un fichier user.class.php contenant :
    
    class user {
    
      private $bdd = null;
      
    
      function __construct($bdd) {
        $this->bdd = $bdd;
      }
    
      public function dbExec($sql, $datas = NULL) {
        //Execution de la requete
        try {
          $requete = $this->bdd->prepare($sql);
          $requete->execute($datas);
        } catch (Exception $e) {
          // en cas d'erreur :
          echo " Erreur ! " . $e->getMessage();
          echo " Les datas : ";
          print_r($datas);
        }
        return $requete;
      }
    
      public function getUserByPseudo($pseudo) {
         $sql = 'SELECT id FROM espace_membres WHERE pseudo = ?';
         $datas = array($pseudo);
         $res = $this->dbExec($sql,$datas);
         return $res->fetchAll();
      }
      
      public function getUserByMail($Mail) {
         $sql = 'SELECT id FROM espace_membres WHERE email = ?';
         $datas = array($Mail);
         $res = $this->dbExec($sql,$datas);
         return $res->fetchAll();
      }
      
      public function addUser($pseudo,$email,$mdp,$contact) {
         //cryptage du mot de passe
         $mdp = password_hash($mdp, PASSWORD_BCRYPT);
         
         //insertion en BDD
         $sql = "INSERT INTO espace_membres (pseudo, email, mot_de_passe , contact)
                  values (?,?,?,?) ";
         $datas = array($pseudo,$email,$mdp,$contact);
         $res = $this->dbExec($sql,$datas);
         return $res;
      }
      
      /**
       * Fonction permettant de vérifier si l'utilisateur existe en fonction de son login et password
       */
      public function authentification($pseudo,$mdp){
        $user = $this->getUserByPseudo($pseudo);
        //verifie qu'il n'y a bien qu'un seul user avec ce pseudo..
        if(!empty($user) && count($user)==1){
          $mdpBdd = $user[0]['mot_de_passe'];
          if (password_verify($mdp, $mdpBdd)){
            return $user;
          }else{
            return false;
          }
        }
      }
    }
    


    Et ton code devient
    <?php
    
    //connexion à la bdd
    // penser à activer l'affichage des erreurs PDO : https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
    require_once 'connect_bd.php';
    
    // on inclu la class user
    require_once "user.class.php"; // on inclu la class user
    
    //initialisation des variables 
    $errors = array();
    
    // recuperation PROPRE des variables AVANT de les utiliser
    $pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL;
    $mdp = !empty($_POST['mdp']) ? $_POST['mdp'] : NULL;
    $cmdp = !empty($_POST['cmdp']) ? $_POST['cmdp'] : NULL;
    $numero = !empty($_POST['numero']) ? $_POST['numero'] : NULL;
    $email = !empty($_POST['email']) ? $_POST['email'] : NULL;
    
    
    //on instancie la class user
    $oUser = new user($bdd);
    
    if (isset($_POST['register'])) {
    
      //test sur le pseudo
    
      if (!$pseudo || !preg_match('/^[a-zA-Z0-9]+$/', $pseudo)) {
        $errors['pseudo'] = "votre pseudo n'est pas valide(alphanumerique)";
      } else {   
        $user = $oUser->getUserByPseudo($pseudo);
        if (!empty($user)) {
          $errors['pseudo'] = 'ce pseudo est déjà pris';
        }
      }
    
      // test sur email
    
      if (!$email || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $errors['email'] = "email invalide";
      } else {
        $user = $oUser->getUserByMail($mail);
        if ($user) {
          $errors['email'] = 'cet email existe deja pour un autre compte';
        }
      }
      //test sur le mot de passe:
      if (!$mdp || $mdp != $cmdp) {
        $errors['mdp'] = "entrer un mot de passe valide";
      }
    
      if (empty($errors)) {
        
        if($oUser->addUser($pseudo,$email,$mdp,$contact)){
          die('felicitation votre compte a bien été créer');
        }
      }else{
        print_r($errors);
      }
    }
    ?>
    


    0
  7. queenb
     
    merci jordan jai essayer dappliquer le code mais on met cette erreur

    "Notice: Undefined variable: pdo in C:\xampp\htdocs\MES ARTICLES\BLOGSUITE\inscription.php on line 23"
    0
  8. queenb
     
    jai une question dans cette ligne qui suit est ce que je dois mettre dans la parenthese a la place de $bdd mes parametre de connection a la bd?

    " function __construct($bdd)"
    0
  9. queenb
     
    voici la ligne 23 dont il sagit
    $oUser = new user($pdo);  

    j'ai essayer de mettre $bdd a la place de $pdo. quand je le fait le message d'erreur disparaît mais les données ne vont toujours pas dans ma base de donnée
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Tu as fait pour la variable $bdd.

      Et pour ton souci.. qu'est ce qu'il s'affiche sur ta page ? Un message d'erreur ? Autre chose ?
      0
      1. queenb > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        avec le $pdo quand je rempli le formulaire et que je valide on met l'erreur que j'ai mis plus haut a la ligne 23 maintenant quand je change $pdo en $bdd et que valide le formulaire ca m'affiche une page blanche vide et les info ne vont toujours pas ds la base de données
        0
  10. Queenb
     
    Rien ne s'affiche... Lorsque je rempli le formulaire et que je valide ça m'affiche une page blanche vide et les données ne vont pas dans la base de données
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      j'ai fait une petite correction dans la class. (j'ai édité mon message précédent)
      peux tu le reprendre et reessayer ?
      0
      1. Queenb > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Ok j'essaie et je te reviens
        0
  11. Queenb
     
    C'est le fichier user.class.php que tu as édité?
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Non pardon.
      Ton autre code.
      Il y a un $$user (un dollar en trop ) au lieu de $user
      0
      1. queenb > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        ok re bonjour jordan jai fais ca marche maintenant les info vont effectivement dans la base de donnée
        0
      2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > queenb
         
        tu penseras à mettre le sujet en resolu.
        Bonne journée.
        0
  12. Queenb
     
    Okpas de soucis...
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Au cas où, tu as vu que je t'ai également prévu la fonction pour vérifier si l'utilisateur peut se connecter
      public function authentification
      0