IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Erreur d'authentification quand le code est dans une classe


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Par défaut Erreur d'authentification quand le code est dans une classe
    Bonjour a tous,

    je souhaite vous demandez votre avis sur un problème que je rencontre actuellement et que je trouve plutôt bizarre.

    En fait, je cherche à authentifier mon utilisateur sur un ensemble d'application et ceux de façon centralisé. Parmi c'est application il y a Mantis (le bug tracker). Pour effectuer des tests, j'ai tout écrit en "brut" en fonction.

    Maintenant que j'ai testé que cela fonctionne, j'ai écrit une classe me permettant de gérer plus proprement l'authentification, mais avec un code identique, l'application refuse de s'authentifier et m'affiche le message d'erreur suivant: ADONewConnection: Unable to load database driver

    Pourtant quand je vérifie mes données de connexion à ma base de données, ces derniers sont correctes.

    Voici le code de ma classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    <?php
     
    class Authentification {
    	/** User login */
    	public $login;
     
    	/** User password */
    	public $password;
     
    	/** Indique si l'utilisateur est connecté */
    	public $isConnected;
     
    	/** User object */
    	private $oUser;
     
     
    	/**
    	 * Constructeur
    	 * @param string Identifiant utilisateur
    	 */
    	public function __construct($login, $password) {
    		$this->login = $login;
    		$this->password = $password;
    		$this->oUser = null;
    		$this->isConnected = false;
    	}
     
    	/**
    	 * Déconnexion
    	 */
    	public static function logout() {
    		$_SESSION = array();
    		unset($_SESSION);
    	}
     
    	/**
    	 * Identification d'un utilisateur
    	 * @return object Le résultat de la requête
    	 */
    	function login() {
    		// Recherhche utilisateur en base
    		[...]
    	}
     
    	/**
    	 * Identification Mantis
    	 * @return boolean Vrai si l'identification à réussi, Faux sinon
    	 */
    	function loginMantis() {
    		require_once('../mantis/config_inc.php');
    		require_once('../mantis/core/config_api.php');
    		require_once('../mantis/core/user_api.php');
    		require_once('../mantis/core/utility_api.php');
    		require_once('../mantis/core/authentication_api.php');
    		require_once('../mantis/core/lang_api.php');
    		require_once('../mantis/core/database_api.php');
    		require_once('../mantis/core.php');
     
    		return auth_attempt_login($this->login, $this->password, false);	
    	}
    }
     
    ?>
    Lorsque je recopie le code de la méthode loginMantis ailleurs que dans une classe tout fonctionne.

    Auriez-vous une idée de se qui coince ?

    Merci par avance.

  2. #2
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    est ce que tu affiches toutes les erreurs ?
    il y a peut-être des informations de connexion qui ne sont pas accessibles dans la méthode

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Par défaut
    bah j'ai regarder le fichier de logs php, mais rien de plus intéressant...

    ce qui est vraiment bizarre, c'est que quand je le sort de la classe, tout fonctionne correctement ! On dirait que c'est vraiment le fais que le code soit dans une classe qui génère l'erreur !

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 85
    Par défaut
    Je ne peux pas t'aider plus que temps, mais je me souviens d'avoir eu beaucoup de problèmes avec les bases de données et les classes, des autorisations denied etc.

    Je n'ai plus les scripts sous la main mais je me rappelle que j'avais du créer une fonction de connexion à la base de donnée dans cette classe, que j'appelais dans toutes les fonctions qui en avaient besoin.
    C'est un peu fastidieux mais ça avait marché. Il fallait que la connexion vienne de la classe. Idem pour une autre "sous-classe", j'avais du créer une fonction dans la class B qui appelait la fonction de connexion de la classe A pour que ça marche. Comme si la classe n'avait pas les droits d'accéder à une connexion établie en dehors de son cadre.

    Il y a peut-être une autre solution mais il est vrai que j'en avais marre de me casser la tête au bout d'un moment.

    Bonne chance.

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Par défaut
    Bah en fait je viens de trouver la solution à mon problème. En fait je faisais les require_once dans la méthode faisant la connexion. Et je viens de me rendre compte que quand je les sors de la définition de ma classe tout fonctionne.

    Donc voila... Merci en tout cas pour votre aide!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] comment se connecté lorsqu'on est dans une class heritage
    Par keokaz dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 20/05/2010, 01h57
  2. Code ne fonctionne pas quand il est dans une page HTML
    Par zizou5roni dans le forum Applets
    Réponses: 1
    Dernier message: 11/08/2008, 11h53
  3. Réponses: 15
    Dernier message: 09/05/2008, 18h11
  4. new Option : ne marche pas quand le code est en alpha ???
    Par Leoxp dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/12/2005, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo