Notice: Undefined index: id in C:\wamp64\www\profil.php on line 30

Résolu
9Ricky2 -  
 9Ricky2 -
Bonjour, Bonsoir

J'ai un petit problème avec mon code php étant nouveau j'ai déjà pas mal avancé mais le problème que je rencontre actuellement c'est à propos de la page connexion/inscription etc...
quand il me renvoi vers l'id d'une page pour ce connecter ce message ci-dessous apparaît


biensûr c'est information sont fausse

Voici mon code Profil.php :

<?php
session_start();
        
        $bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
      
        if(isset($_GET['id']) AND $_GET['id'] > 0)
        {
            $getid = intval($_GET['id']);
            $requser = $bdd->prepare('SELECT * FROM membres WHERE id = ?');
            $requser->execute(array($getid));
            $userinfo = $requser->fetch();
        
        }
        ?>
            <!DOCTYPE html>
                <head>
                    <title> TEST PHP </title>
                    <meta charset="utf-8">
                </head>
            
                <body>
                    <div align="center">
                            <h2>Profil de <?php echo $userinfo['pseudo']?></h2>
                            <br /><br />
                            Pseudo = <?php echo $userinfo['pseudo']?>
                            <br />
                            Mail = <?php echo $userinfo['mail']?> 
                        <br />
                        <?php
                        if($userinfo['id'] == $_SESSION['id'])
                            ?>
                            <a href="#">Editer mon profil</a>
                            <?php
                        
                          ?>  
                    </div>
                </body>
            </html>
            
 <?php                 
?>


et voici mon code Connexion.php :

<?php
session_start();
        
        $bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
      

        if(isset($_POST['formconnexion']))
        {
            $mailconnect = htmlspecialchars($_POST['mailconnect']);
            $mdpconnect = sha1($_POST['mdpconnect']);
            if(!empty($mailconnect) AND !empty($mdpconnect))
            {
                $requser = $bdd->prepare("SELECT * FROM membres WHERE mail = ? AND motdepasse = ?");
                $requser->execute(array($mailconnect, $mdpconnect));
                $userexist = $requser->rowCount();
                if($userexist == 1)
                {
                    $userinfo = $requser->fetch();
                    $_SESSION['id'] = $userinfo['id'];
                    $_SESSION['pseudo'] = $userinfo['pseudo'];
                    $_SESSION['mail'] = $userinfo['mail'];
                    header("Location: profil.php?id=".$_SESSION['id']);
                }
                else
                {
                    $erreur = "Mauvais mail ou mot de passe !";
                }
            }
            else
            { 
                $erreur = "Tous les champs doivent être complétés !";
            }
        } 
        
        ?>
            <!DOCTYPE html>
                <head>
                    <title> TEST PHP </title>
                    <meta charset="utf-8">
                </head>
            
                <body>
                    <div align="center">
                            <h2>Connexion</h2>
                            <br /><br />

                        <form method="POST" action="">
                           <input type="email" name="mailconnect" placeholder="Mail" />
                           <input type="password" name="mdpconnect" placeholder="Mot de passe" />
                           <input type="submit" name="formconnexion" value="Se connecter " />
                        </form>
                        <?php
                            if(isset($erreur))
                            {
                                echo '<font color="red">'.$erreur. "</font>" ;
                            }
                        ?>
                    </div>
                </body>
            </html>


Merci de votre futur réponse

5 réponses

  1. 9Ricky2
     
    Rebonjour Jordane merci pour ta réponse mais je n'est pas très bien compris la signification et également ou dois-je le mettre dans mon code pouvez vous m'aidez ?
    0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    Il y aurait beaucoup à dire sur ton code.
    Déjà, activer l'affichage des erreurs PHP au debut du fichier
    Ensuite, activer l'affichage des erreurs PDO dans la connexion à ta bdd et mettre CHAQUE requête dans un bloc try/catch
    Puis l'utilisation de la fonction rowCount qui ne doit jamais être faite sur une requête de type SELECT
    Reste la "récupération" propre des variables (ou au moins vérifier qu'elle existe... ) AVANT de les utiliser
    Et enfin, séparer le code de connexion à ta bdd dans un autre fichier de façon à juste l'inclure dans tes pages au lieu de le réécrire sur chacune d'elle.

    Bref,
    Tout ça devrait donner un truc du genre

    <?php
    //fichier de connexion à la bdd : cnxbdd.php
    
    try{
       $bdd =new PDO('mysql:host=127.0.0.1; dbname=espace_membre; charset=utf8', '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());
    }
    ?>
    


    <?php
    //affichage des erreurs php
    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);
    
    //démarrage des sessions
    session_start();
            
    // Connexion à la bdd
    require_once "cnxbdd.php";
    
    //récupération PROPRE des variables AVANT de les utiliser
    $id = !empty($_GET['id']) ? intval($_GET['id']) : NULL;
    $session_id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
    
    if($id>0){
      $sql = 'SELECT * FROM membres WHERE id = ?';
      $datas = array($id);
    
      //Execution de la requete (placée dans un bloc TRY/CATCH !! )
      try{
        $requete = $bdd -> prepare($sql) ;
        $requete->execute($datas) ;
        $userinfo = $requete->fetch();
      }catch(Exception $e){
        // en cas d'erreur :
         echo " Erreur ! ".$e->getMessage();
         echo " Les datas : " ;
        print_r($datas);
      }
     
    } else{
      echo " ID manquant !"; 
    }      
    
    ?>
    <!DOCTYPE html>
    <html>
      <head>
        <title> TEST PHP </title>
        <meta charset="utf-8">
      </head>
    
      <body>
        <div align="center">
          <?php
           if(!empty($userinfo)){
            //récupération PROPRE des variables AVANT de les utiliser
            $pseudo = !empty($userinfo['pseudo']) ? $userinfo['pseudo'] : "";
            $mail = !empty($userinfo['mail']) ? $userinfo['mail'] : "";
            $user_id = !empty($userinfo['id']) ? $userinfo['id'] : "";
            
            echo "<h2>Profil de $pseudo </h2>
              <br /><br />
              Pseudo = $pseudo'
              <br />
              Mail = $mail 
             <br /> ";
             if($user_id == $session_id){
               echo "<a href='#'>Editer mon profil</a>";
             }
           }else{
             echo " Utilisateur inconnu !";
           }
          ?>
        </div>
      </body>
    </html>
               
    


    Pour rappel, voici quelques liens à lire ( et à conserver...) pour tes prochains codes...
    https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
    https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
    0
  3. 9Ricky2
     
    D'accord merci je vais voir ça
    je reviens vers vous dans quelque instant
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. 9Ricky2
     
    Bonjour je viens de corriger le code car hier je ne pouvais pas mais maintenant j'ai une erreur à la ligne 25 pour la connexion à la bdd ce qui donne ceci :


    j'espère ne pas m'avoir trompé sur le code le voici également :

    <?php
    //fichier de connexion à la bdd : cnxbdd.php
    
    try{
       $bdd =new PDO('mysql:host=127.0.0.1; dbname=espace_membre; charset=utf8', '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());
    }
    ?>
    
    <?php
    //affichage des erreurs php
    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);
    
    //démarrage des sessions
    session_start();
            
    // Connexion à la bdd
    require_once "cnxbdd.php";
    
    //récupération PROPRE des variables AVANT de les utiliser
    $id = !empty($_GET['id']) ? intval($_GET['id']) : NULL;
    $session_id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
    
    if($id>0){
      $sql = 'SELECT * FROM membres WHERE id = ?';
      $datas = array($id);
    
      //Execution de la requete (placée dans un bloc TRY/CATCH !! )
      try{
        $requete = $bdd -> prepare($sql) ;
        $requete->execute($datas) ;
        $userinfo = $requete->fetch();
      }catch(Exception $e){
        // en cas d'erreur :
         echo " Erreur ! ".$e->getMessage();
         echo " Les datas : " ;
        print_r($datas);
      }
     
    } else{
      echo " ID manquant !"; 
    }      
    
    ?>
    <!DOCTYPE html>
    <html>
      <head>
        <title> TEST PHP </title>
        <meta charset="utf-8">
      </head>
    
      <body>
        <div align="center">
          <?php
           if(!empty($userinfo)){
            //récupération PROPRE des variables AVANT de les utiliser
            $pseudo = !empty($userinfo['pseudo']) ? $userinfo['pseudo'] : "";
            $mail = !empty($userinfo['mail']) ? $userinfo['mail'] : "";
            $user_id = !empty($userinfo['id']) ? $userinfo['id'] : "";
            
            echo "<h2>Profil de $pseudo </h2>
              <br /><br />
              Pseudo = $pseudo'
              <br />
              Mail = $mail 
             <br /> ";
             if($user_id == $session_id){
               echo "<a href='#'>Editer mon profil</a>";
             }
           }else{
             echo " Utilisateur inconnu !";
           }
          ?>
        </div>
      </body>
    </html>
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Si dans le code que je t'ai donné j'ai indiqué que le fichier se nomme cnxbdd.php.....c'est justement pour que tu crées ce fichier.......
      0
      1. 9Ricky2 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Merci Tout fonctionne parfaitement je vous remercie Bonne journée, soirée à vous
        et excusez-moi du dérangement !:=)
        0