Espace membre

salut tous: Mercie pour votre aide d'avance
voici le code que php de ma page connexion.php le problème est la suivante ,le serveur m'envoi un message d’erreur ( PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given)

le code php:
/////////////
}
else
{
 $ousername = '';
 //On verifie si le formulaire a ete envoye
 if(isset($_POST['username'], $_POST['password']))
 {
  //On echappe les variables pour pouvoir les mettre dans des requetes SQL
  if(get_magic_quotes_gpc())
  {
   $ousername = stripslashes($_POST['username']);
   $[/contents/1347-wsh-objet-wshnetwork username] = mysql_real_escape_string(stripslashes($_POST['username']));
   $password = stripslashes($_POST['password']);
  }
  else
  {
   $username = mysql_real_escape_string($_POST['username']);
   $password = $_POST['password'];
  }
  //On recupere le mot de passe de lutilisateur
  $req = mysql_query('select password,id from users where username="'.$username.'"');
  $dn = mysql_fetch_array($req);
  //On le compare a celui quil a entre et on verifie si le membre existe
  if($dn['password']==$password and mysql_num_rows($req)>0)
  {
   //Si le mot de passe es bon, on ne vas pas afficher le formulaire
   $form = false;
   //On enregistre son pseudo dans la session username et son identifiant dans la session userid
   $_SESSION['username'] = $_POST['username'];
   $_SESSION['userid'] = $dn['id'];


//////

EDIT : Ajout des balises de code

5 réponses

  1. mes salutation
    je parle du code que j'ai donné ;
    pour ma deuxième question est ce que c'est possible de faire des modification dans les paramètre cpanel --pour sélectionner une version de php pour que mon code que j'ai mis soit correcte
    j’espère bien que mon aidé est claire
    1. <<Tu utilises l'ancienne extension mysql considérée comme obsolète.>>
      est ce que c'est possible que j'utilise ce code en modifiant les paramètres panel du serveur
      Mercie bien....
      1. Modérateur
        Quel code ? celui que je t'ai donné ou le "tient" ??
        Qu'est-ce que tu appelles : "paramètres panel du serveur" ??

        Merci de bien vouloir faire des efforts dans dans la rédaction de tes questions en y mettant le minimum de détails nécessaire à notre compréhension.......
    2. Modérateur
      Bonjour,

      1 - A l'avenir, merci d'utiliser les balises de code pour poster ton code sur le forum. (j'ai édité tes messages pour les ajouter)
      • icone en forme de <> dans la barre de menu.


      2 - Tu utilises l'ancienne extension mysql considérée comme obsolète.
      Je t'invite vivement à passer à mysqli ou à pdo.
      => https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top

      3 - Si tu passes à PDO, voici un exemple de code qui pourrait te servir :
      https://forums.commentcamarche.net/forum/affich-34340900-login-password-php#7

      1. le code que j-ai mis et la suivante :est même message d'erreur

        <php>
        
        //Si lutilisateur est connecte, on le deconecte
        if(isset($_SESSION['username']))
        {
         //On le deconecte en supprimant simplement les sessions username et userid
         unset($_SESSION['username'], $_SESSION['userid']);
        
        <php>
        <div class="message">Vous avez bien été déconnecté.<br />
        <a href="<?php echo $url_home; ?>">Accueil</a></div>
        
        <php>
        }
        else
        {
         $ousername = '';
         //On verifie si le formulaire a ete envoye
         if(isset($_POST['username'], $_POST['password']))
         {
          //On echappe les variables pour pouvoir les mettre dans des requetes SQL
          if(get_magic_quotes_gpc())
          {
           $ousername = stripslashes($_POST['username']);
           $username = mysql_real_escape_string(stripslashes($_POST['username']));
           $password = stripslashes($_POST['password']);
          }
          else
          {
           $username = mysql_real_escape_string($_POST['username']);
           $password = $_POST['password'];
          }
          //On recupere le mot de passe de lutilisateur
          $sql='select password,id from users where username="'.$username.'"'
        $req = mysql_query($sql); 
        if (!$req)
        {
            echo "erreur sql: ".$sql
        }
        else
        {
          $dn = mysql_fetch_array($req);
          //On le compare a celui quil a entre et on verifie si le membre existe
          if($dn['password']==$password and mysql_num_rows($req)>0)
          {
           //Si le mot de passe es bon, on ne vas pas afficher le formulaire
           $form = false;
           //On enregistre son pseudo dans la session username et son identifiant dans la session userid
           $_SESSION['username'] = $_POST['username'];
           $_SESSION['userid'] = $dn['id'];
        
        
        
        } }  
        
        
        }
          else
          {
           //Sinon, on indique que la combinaison nest pas bonne
           $form = true;
           $message = 'La combinaison que vous avez entré n\'est pas bonne.';
          }
         }
         else
         {
          $form = true;
         }
         if($form)
         {
          //On affiche un message sil y a lieu
         if(isset($message))
         {
          echo '<div class="message">'.$message.'</div>';
         }
         //On affiche le formulaire
        
        

        EDIT : Ajout des balises de code !

        //////////Mercie bien/////////
        1. Contributeur
          bonsoir, après
          $req = mysql_query
          , tu dois vérifier que $req n'est pas faux. si il est faux, la requête a retourné une erreur, tu ne peux pas faire mysql_fetch_array.
          je te suggère:
          $sql='select password,id from users where username="'.$username.'"'
          $req = mysql_query($sql); 
          if (!$req)
          {
              echo "erreur sql: ".$sql
          }
          else
          {
               $dn = mysql_fetch_array($req);
               ....
          }
          1. Contributeur
            Tu pourrais aussi ajouter le mot de passe dans le where, pour éviter de le vérifier ensuite.