Bonjour,

Voila je rencontre un petit problème avec mon code. Original, non ? Sauf que je butte dessus depuis des heures et pas moyen. Je viens ici en désespoir de cause après avoir chercher sur stackoverflow sans succès. Voilà j'ai un site CAKEPHP sur mon localhost en développement donc qui marche nickel, sauf que je l'ai installé sur un serveur dans un sous-dossier du genre :

www.monsite/tests/monprojetcake/

Et là, tout marche ! Quel est le problème, me demanderez-vous ? Je vais y venir. Il se trouve que le login fonctionne très bien sur mon localhost et pas du tout sur mon projet en ligne. C'est de l'authentification cakephp simple, voici ma fonction login dans le controller Users :

    public function login(){

        debug($this->Auth->password($this->request->data['User']['password']));
        debug($this->Auth->password('monpass'));
        debug(AuthComponent::password('monpass'));

        //Ces trois tests donnent la même chaîne qui est celle présente en base de donnée, à l'identique

        if(!empty($this->request->data)){
            if($this->Auth->login()){
                return $this->redirect('/');
            }else{
                debug('Login error');
            }
        }
    }

Les trois debugs renvoient la même chaîne qui est celle de mon pass en bdd, et il n'y a pas d'erreur dans le username non plus. La connexion à ma base et ma base sont en utf-8 et je vais fumer une clope. Je veux dire, ça marche en localhost, et pas sur mon site en ligne, à cause du sous-dossier ? Est-ce que quelqu'un à déjà eu ce problème ?

4 réponses


chatoninja
Auteur
Réponse acceptée

C'est ok romses ça marche maintenant, merci pour ton aide. Mais c'était dû à un whitespace avant l'ouverture de <?php dans un de mes composants homemade. Comme l'authentification fonctionne avec les sessions et que du coup avec le whitespace ça envoyait les headers, ça rendait la connexion impossible même avec les bons identifiants et la bonne clé pour password en database.

Aucun message d'erreur pour ce cas de figure et ça marche en localhost (mais pas en prod !).

Donc si vous rencontrez le même problème vérifiez bien qu'il n'y a rien (même pas un ) avant votre code html dans le view source du browser, ni dans vos fichiers php avant <?php

Il est aussi recommandé de ne pas fermer ses fichiers php par ?>

et ces quoi le message d'erreur cela t'affiche?

Ben du coup un debug login error et si je fais echo $this->Auth->authError j'ai le message d'erreur que j'ai crée dans la config de mon auth component "identifiants incorrects". Mais il se trouve qu'il y a un lien avec les sessions dans l'authentification et qu'un whitespace dans mon code pourrait en être la cause. En effet quand je fais view source code j'ai une ligne blanche en 1 avant <!DOCTYPE>

Est-ce que vous pensez que ça puisse causer une erreur d'authentification ?

Mais alors pour trouver ce whitespace, TINTIN & MILOU !

tu as quoi dans ton debug($this->request->data['User']['password'])) et que contient ton fichier AppController , je veux dire les paramètres de configuration du composant Auth