impossible de connecter

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : impossible de connecter

par materiel67 » 20 sept. 2006, 14:33

meme sans mot de passe ca marche pas
je viens de remettre la version 1.4
magic avec cette version mon code fonctionne

par Cyrano » 20 sept. 2006, 13:54

réinstalle rien du tout, essaye sans mot de passe du tout, je parie que l'installation n'en comporte pas. Éventuellement, remplace le num de l'utilisateur par "root" toujours sans mot de passe et si ça marche pâs encore avec le mot de passe que tu as indiqué lors de l'instalation le cas échéant.

par BeRoots » 20 sept. 2006, 12:29

eesaye de comparer les .ini avec un logiciel de comparaison...

sinon si ce n'est pas trop contraignant pour toi, essaye de reinstaller l'ancienne version de wamp comme çà tu sera fixé ;)

ou encore une p'tite recherche sur les changement entre les deux version de wamp... :-k

par materiel67 » 20 sept. 2006, 12:23

oui serveur ok
es ce que le fichier ini de la version 1.4 et le meme que la news version ?

par graphistnet » 20 sept. 2006, 12:15

Est ce que ton serveur mySQL est démarré?

par BeRoots » 20 sept. 2006, 12:04

a tu essayer de comparer les php.ini et my.ini entre tes deux PC...

essaye aussi de re-re-re-passer en revue tes infos de connection sql au cas où

c'est vrai que c'est bizzard si ça marche sur un pc mais pas l'autre :-k

par materiel67 » 20 sept. 2006, 11:45

non je viens de recontrole s'est le bon user et mot de passe en plus cela fonctionne sur l'ancienne version de wamp. je pense a un prob de config de la nouvelle version mais je ne sais pas ou

par @rthur » 20 sept. 2006, 11:34

Ce message d'erreur veut dire que tu t'es planté dans ton nom d'utilisateur/mot de passe MySQL ;)

par materiel67 » 20 sept. 2006, 11:26

hélas non voila le message recu.

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'docteurpc67'@'localhost' (using password: NO) in C:\wamp\www\DocteurPC\Admin\BaseDeDonnee.php on line 26
Impossible de se connecter au serveur localhost : Access denied for user 'docteurpc67'@'localhost' (using password: NO)

par Cyrano » 20 sept. 2006, 11:13

Bon, j'ai fait ça vite fait hier soir sans trop aller dans le détail, voici avec quelques corrections :
- La classe :
<?php
class BaseDeDonnee 
{
    var $adresseServeur;
    var $nomBase;
    var $nomUser;
    var $motDePasse;

    var $database;
    var $erreur;
    
    var $exec; // ressource d'exécution de requête

    function BaseDeDonnee( )
    {
        $this->adresseServeur = "localhost";
        $this->nomBase = "docteurpc67";
        $this->nomUser = "root";
        $this->motDePasse = "";

    }

    function seConnecter()
    {
        //création de la connexion
        $this->database = mysql_connect($this->adresseServeur, $this->nomBase, $this->motDePasse);

        if(false === $this->database)
        {
            $this->erreur = "Impossible de se connecter au serveur ". $this->adresseServeur ." :\n". mysql_error();
            return false;
        }

        // selection de la bdd
        if(false === mysql_select_db($this->nomBase))
        {
            $this->erreur = "Impossible de se connecter à la base de données :\n". mysql_error();
            return false;
        }
    }

    function executer($sql)
    {
        $reussi = false;
        if(false !== ($this->exec = mysql_query($sql)))
        {
            $reussi = true;
        }
        else
        {
            $this->erreur = 'Erreur SQL !<br>'. $sql .'<br>'. mysql_error();
        }
        return $reussi;
    }
    
    function listedonnees()
    {
        $retour = false;
        /* On tente de récupérer les données */
        if(false !== ($donnees = mysql_fetch_assoc($this->exec)))
        {
            /* On assigne les données pour le retour */
            $retour = $donnees;
        }
        else
        {
            $this->erreur = 'Erreur SQL !<br>'. $sql .'<br>'. mysql_error();
        }
        /* On retourne les données s'il n'y a pas eu de problème, sinon on retournera FALSE */
        return $retour;
    }
    
    function seDeconnecter() 
    {
        mysql_close($this->database);
    }
    
    function requete($requete) 
    {
        $resultat = mysql_query ($requete);
        return $resultat;
    }
}
?>
N'oublie pas de remettre ton mot de passe éventuellement;

- Le code de ta page :
<?php
/* Pensez a inclure la classe de connexion vers mysql ici */
require_once ('BaseDeDonnee.php');

$DB = new BaseDeDonnee();
$cnx = $DB->seConnecter();
if(false !== $cnx)
{
    if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']))
    {
        extract($_POST);
        // on recupère le password de la table qui correspond au login du visiteur
        $sql = "select pwd from tbl_user where login='".$login."'";
        /* On appelle une méthode de la classe pour exécuter la requête qu'on envoie en paramètre */
        $req = $DB->executer($sql);
        /* On vérifie le retour avant de continuer */
        if(false !== $req)
        {
            /* l'exécution de la requête est correcte : on utilise une autre méthode pour récupérer le retour */
            $data = $DB->listedonnees();
            if(false !== $data)
            {
                if($data['pwd'] != $pass) 
                {
                    echo '<p>Mauvais login / password. Merci de recommencer</p>';
                    include('login.htm'); // On inclus le formulaire d'identification
                    exit;
                }
                else
                {
                    session_start();
                    $_SESSION['login'] = $login;
            
                    echo '<p>Identification réussie !</p>';
            
                }
            }
            else
            {
                /* La récupération des données a échoué, on récupère le message d'erreur pour affichage (débuggage seulement) */
                echo($DB->erreur);
            }
        }
        else
        {
            /* L'exécution de la requête a échoué, on récupère le message d'erreur pour affichage (débuggage seulement) */
            echo($DB->erreur);
        }
    }
    else
    {
        echo '<p>Vous avez oublié de remplir un champ.</p>';
        include('login.htm'); // On inclut le formulaire d'identification
        exit;
    }
}
else
{
    /* La connexion au serveur ou à la base a échoué, on récupère le message d'erreur pour affichage (débuggage seulement) */
    echo($DB->erreur);
}
?>
Ça m'étonnerait quand même que ça ne fonctionne pas ce coup là :-k

par materiel67 » 20 sept. 2006, 09:35

Sniff cela marche pas non plus je recois le meme message.
Petite question.
Je possede plusieurs pc, celui sur lequels j'ai ce probleme viens d'etre reinstalle et j'ai mis la news version de wamp ( V 1.6.1)
sur mon 2 pc j'ai la version V 1.4.4 et sur celui mon code fonctionne correctement. Ai -je oublier un truc quand j'ai fais mon instalation ? je sais pas modifier le php.ini ????
Merci de ton aide sympa de ta parts.

par Cyrano » 19 sept. 2006, 23:06

Ok, effectivement, c'est plus facile de comprendre pourquoi ça marche pas. Tu utilises ta classe pour te connecter. Très bien, maintenant, tu as un objet pour ta connexion. Là où ça se gâte, c'est qu'ensuite tu ne l'utilises plus pour utiliser des fonctions MySQL. Par exemple, tu mets ceci :
<?php
//...
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
//...
?>
Mais de cette manière là, ton objet ne te sert strictement à rien.

L'idée d'utiliser une classe pour accéder aux données, c'est mieux si les méthodes sont dans la classe.

Il serait donc logique que tu transposes ta fonction dans une méthode d'exécution de la requête. On va transformer ça de la manière suivante, lis biens les commentaires que j'ai ajouté dans le code :

-1- la classe :
<?php

class BaseDeDonnee {

    var $adresseServeur;
    var $nomBase;
    var $nomUser;
    var $motDePasse;

    var $database;
    var $erreur;
    
    var $exec; // ressource d'exécution de requête

    function BaseDeDonnee( )
    {
        $this->adresseServeur = "localhost";
        $this->nomBase = "docteurpc67";
        $this->nomUser = "root";
        $this->motDePasse = "";

    }

    function seConnecter() {

        //création de la connexion
        $this->database = mysql_connect($this->adresseServeur, $this->nomBase, $this->motDePasse);

        if( ! $this->database){
            echo 'Impossible de se connecter à la base de données';
            return 0;
        }

        // selection de la bdd
        if( !mysql_select_db($this->nomBase, $this->database))
        {
            echo( mysql_error($this->bdd) );
            return 0;
        }

    }
    function executer($sql)
    {
        $reussi = false;
        if(false !== ($this->exec = mysql_query($sql)))
        {
            $reussi = true;
        }
        else
        {
            $this->erreur = 'Erreur SQL !<br>'. $sql .'<br>'. mysql_error();
        }
        return $reussi;
    }
    
    function listedonnees()
    {
        $retour = false;
        /* On tente de récupérer les données */
        if(false !== ($donnees = mysql_fetch_assoc($this->exec)))
        {
            /* On assigne les données pour le retour */
            $retour = $donnees;
        }
        else
        {
            $this->erreur = 'Erreur SQL !<br>'. $sql .'<br>'. mysql_error();
        }
        /* On retourne les données s'il n'y a pas eu de problème, sinon on retournera FALSE */
        return $retour;
    }
    
    function seDeconnecter() {
        mysql_close($this->database);
    }
    function requete($requete) {
        $resultat = mysql_query ($requete);
        return $resultat;
    }
}
?>
Et ensuite ta page :
<?php

// pensez a ouvrir une connexion vers mysql ici
require_once ('BaseDeDonnee.php');

$DB = new BaseDeDonnee();
$DB->seConnecter();

if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']))
{
    extract($_POST);
    // on recupère le password de la table qui correspond au login du visiteur
    $sql = "select pwd from tbl_user where login='".$login."'";
    /* On appelle une méthode de la classe pour exécuter la requête qu'on envoie en paramètre */
    $req = $DB->executer($sql);
    /* On vérifie le retour avant de continuer */
    if(false !== $req)
    {
        /* l'exécution de la requête est correcte : on utilise une autre méthode pour récupérer le retour */
        $data = $DB->listedonnees();
        if(false !== $data)
        {
            if($data['pwd'] != $pass) 
            {
                echo '<p>Mauvais login / password. Merci de recommencer</p>';
                include('login.htm'); // On inclus le formulaire d'identification
                exit;
            }
            else
            {
                session_start();
                $_SESSION['login'] = $login;
        
                echo '<p>Identification réussis !</p>';
        
            }
        }
        else
        {
            /* La récupération des données a échoué, on récupère le message d'erreur pour affichage (débuggage seulement) */
            echo($DB->erreur);
        }
    }
    else
    {
        /* L'exécution de la requête a échoué, on récupère le message d'erreur pour affichage (débuggage seulement) */
        echo($DB->erreur);
    }
}
else
{
    echo '<p>Vous avez oublié de remplir un champ.</p>';
    include('login.htm'); // On inclut le formulaire d'identification
    exit;
}


?>
VOilà, teste ça et n'hésite pas à demander des explications si un point t'échappe ou te semble abstrait, il y aura toujours quelqu'un dans les parages pour te remettre sur le chemin ;)

par materiel67 » 19 sept. 2006, 22:42

est la page login

<?php

// pensez a ouvrir une connexion vers mysql ici
require_once ('BaseDeDonnee.php');

$DB = new BaseDeDonnee();
$DB->seConnecter();

if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
  extract($_POST);
  // on recupère le password de la table qui correspond au login du visiteur
  $sql = "select pwd from tbl_user where login='".$login."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

  $data = mysql_fetch_assoc($req);

  if($data['pwd'] != $pass) {
    echo '<p>Mauvais login / password. Merci de recommencer</p>';
    include('login.htm'); // On inclus le formulaire d'identification
    exit;
  }
  else 
  {
    session_start();
    $_SESSION['login'] = $login;
    
    echo '<p>Identification réussis !</p>';
	
  }    
}
else {
  echo '<p>Vous avez oublié de remplir un champ.</p>';
   include('login.htm'); // On inclut le formulaire d'identification
   exit;
}


?>

par materiel67 » 19 sept. 2006, 22:40

Voila le code
<?php

class BaseDeDonnee {
   
   var $adresseServeur;
   var $nomBase;
   var $nomUser;
   var $motDePasse;
   
   var $database;
   var $erreur;

   function BaseDeDonnee( )
   {
   $this->adresseServeur = "localhost";
   $this->nomBase = "docteurpc67";
   $this->nomUser = "root";
   $this->motDePasse = ""; 
  
   }

   function seConnecter() {
     
     //création de la connexion
     $this->database = mysql_connect($this->adresseServeur, $this->nomBase, $this->motDePasse);   

     if( ! $this->database){
      echo 'Impossible de se connecter à la base de données';
      return 0;
     }

     // selection de la bdd       
     if( !mysql_select_db($this->nomBase, $this->database))
     { 
      echo( mysql_error($this->bdd) );
      return 0;
     }       

  }
  function seDeconnecter() {
   mysql_close($this->database);
  }  
  function requete($requete) {
   $resultat = mysql_query ($requete);
   return $resultat;
  }
}
?>

par Cyrano » 19 sept. 2006, 22:35

Faudrait qu'on voie le code correspondant à cette erreur, la ligne et le fichier sont indiqués. N'oublie pas de masquer le mot de passe le cas échéant.