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

Zend_Acl & Zend_Auth PHP Discussion :

Erreur URL requise non trouvée auth/login


Sujet :

Zend_Acl & Zend_Auth PHP

  1. #1
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut Erreur URL requise non trouvée auth/login
    Bonjour,
    Le tutoriel "Débutez avec Zend_Auth" fonctionne mais quand je veux l'utiliser dans mon application, j'ai une erreur :
    L'URL requise n'a pu etre trouvée sur ce serveur. La référence sur ">la page citée semble être erronée ou perimée. Nous vous prions d'informer l'auteur de ">cette page de cette erreur. Si vous avez tapé l'URL à la main, veuillez vérifier l'orthographe et réessayer.
    Quand je passe la souris sur ">la page citée", la barre d'état m'affiche ceci :
    http://localhost/html/monsite/auth/<!--#echo encoding=
    J'ai beau parcourir le code, je ne vois pas de différence notable avec celui du tutoriel.
    La seule différence entre les deux application est que le tuto est sur http://localhost/zf-tutoriel et mon appli sur http://localhost/html/monsite

    Que signifie le message d'erreur et surtout ce qui apparaît dans la barre d'état alors que la redirection doit se faire sur auth/login ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Montrez-nous un peu de code, car là il semble que vous essayez de passer comme variable un commentaire Html !

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    J'ai juste légèrement adapté le code du tuto à mon application mais les instructions sont les mêmes.
    AuthController.php :
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <?php
    /*
     * AuthController.php
     * Contrôleur de connexion à Mnémosis
     * 
     * Créé le 23 janv. 2010 d'après le tutoriel 'Débutez avec Zend_Auth
     * 
     *
     */
    class AuthController extends Zend_Controller_Action
    {
        function init()
        {
            $this->initView();
            $this->view->baseUrl = $this->_request->getBaseUrl();
        }
     
        function indexAction()
        {
            $this->_redirect('/');
        }
     
        function loginAction()
        {
            $this->view->message = '';
     
            if ($this->_request->isPost()) 
            {
                // collect the data from the user
                Zend_Loader::loadClass('Zend_Filter_StripTags');
                $f = new Zend_Filter_StripTags();
                $username = $f->filter($this->_request->getPost('username'));
                $password = $f->filter($this->_request->getPost('password'));
     
                if (empty($username)) 
                {
                    $this->view->message = 'Veuillez donner votre perso Swing.';
                } 
                else 
                {
                    // setup Zend_Auth adapter for a database table
                    Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable');
                    $dbAdapter = Zend_Db_Table::getDefaultAdapter();
                    $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
                    $authAdapter->setTableName('Joueur');
                    $authAdapter->setIdentityColumn('J_Nom');
                    $authAdapter->setCredentialColumn('J_MotPasse');
     
                    // Set the input credential values to authenticate against
                    $authAdapter->setIdentity($username);
                    $authAdapter->setCredential(md5($password));
     
                    // do the authentication
                    $auth = Zend_Auth::getInstance();
                    $result = $auth->authenticate($authAdapter);
     
                    if ($result->isValid()) 
                    {
                        // success: store database row to auth's storage
                        // system. (Not the password though!)
                        $data = $authAdapter->getResultRowObject(null, 'password');
                        $auth->getStorage()->write($data);
                        $this->_redirect('/');
                    } 
                    else 
                    {
                        // failure: clear database row from session
                        $this->view->message = "Perso Swing ou mot de passe incorrect.";
                    }
                }
            }
     
            $this->view->title = 'Connexion à Mnémosis';
            $this->render();
        }
     
        function logoutAction()
        {
            Zend_Auth::getInstance()->clearIdentity();
            $this->_redirect('/');
        }
    }
    ?>
    auth/login.phtml :
    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
    <?php
    /*
     * login.phtml
     * Formulaire de login
     * 
     * Créé le 19 avr. 2010
     * 
     *
     */
    ?>
    <?php //echo $this->render('header.phtml'); ?>
    <h1><?php echo $this->escape($this->title); ?></h1>
    <?php if(!empty($this->message)) :?>
        <div id="message">
            <?php echo $this->escape($this->message);?>
        </div>
    <?php endif; ?>
    <form action="<?php echo $this->baseUrl ?>/auth/login" method="post">
    <div>
        <label for="username">Nom joueur Swing :</label>
        <input type="text" name="username" value=""/>
    </div>
    <div>
        <label for="password">Mot de passe :</label>
        <input type="password" name="password" value=""/>
    </div>
    <div id="formbutton">
        <input type="submit" name="login" value="Login" />
    </div>
    </form>
    <?php //echo $this->render('footer.phtml'); ?>
    IndexController :
    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
    <?php
    /*
     * indexController.php
     * DContrôleur de la page d'accueil de Mnémosis'
     * 
     * Créé le 13 janv. 2010 d'après indexController du tuto débuter Zend MVC'
     * 
     *
     */
     
    class IndexController extends Zend_Controller_Action 
    {
        /*
         * init
         * Initialise le controlleur d'index
         */
        function init()
        {
            $this->initView();
            //Zend_Loader::loadClass('Joueur');
            $this->view->baseUrl = $this->_request->getBaseUrl();
            $this->view->user = Zend_Auth::getInstance()->getIdentity();
        }
     
        /*
         * preDispatch
         * 
         */
        function preDispatch()
        {
            $auth = Zend_Auth::getInstance();
     
            if (!$auth->hasIdentity()) 
            {
                $this->_redirect('auth/login');
            }
        }
     
        /*
         * indexAction
         * Affiche la page d'accueil
         */
        function indexAction()
        {
            $this->view->title = "Accueil";
        } //Fin function indexAction
     
        /*
         * connecterAction
         * Gère la connexion de l'utilisateur
         */
        function connecterAction()
        {
            $this->view->title = "Connexion";
        } // Fin function connecterAction
     
    } // Fin class IndexController
    ?>
    EDIT :
    Si je commente (/* */) la fonction preDispatch dans IndexController.php, la vue s'affiche. C'est donc dans le déroulement du preDispatch que ça cafouille.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Je revient sur ton souci.

    Tu ne peux pas passer par un plugin

    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
     
    class My_Login_Connexion extends Zend_Controller_Plugin_Abstract {
     
        public function preDispatch(Zend_Controller_Request_Abstract $request) {
     
            if(!Zend_Auth::getInstance()->hasIdentity()) {
     
                $request->setControllerName('Login');
                $request->setActionName('index');
     
            }
     
        }
     
    }

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Tu ne peux pas passer par un plugin
    C'est une question ou une affirmation ?
    Etant sous Winbug, je n'ai pas l'appli sous la main mais je ne pense pas avoir de plugin dans mon code.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    C'était un question, pourquoi ne pas passer par ce genre de Plugin pour éviter de reporter le code de controller en controller.

  7. #7
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    Quelle est ta version de zend utilisée ? Tu as la main sur quoi exactement ? Je pense que tu ne devrais plus utiliser si possible de Zend_Loader::loadClass(); mais configurer un autoloader. Sinon oui, un plugin si tu peux en ajouter un me parait la meilleure solution

  8. #8
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    C'était un question, pourquoi ne pas passer par ce genre de Plugin pour éviter de reporter le code de controller en controller.
    Je suis encore débutant sous Zend (je rappelle que je n'ai fait que suivre et essayer d'adapter à mon appli un tuto) et je n'ai pas encore rencontré ce genre de "plugin".

    Citation Envoyé par Madfrix
    Quelle est ta version de zend utilisée ?
    C'est marqué dans le tag à côté du titre de la discussion : 1.7

    Tu as la main sur quoi exactement ?
    Sur le clavier pourquoi ?
    Quel est le sens de cette question ?
    J'ai la main sur tout ce que je veux, pour le moment l'appli est sur mon PC.

    Je pense que tu ne devrais plus utiliser si possible de Zend_Loader::loadClass(); mais configurer un autoloader. Sinon oui, un plugin si tu peux en ajouter un me parait la meilleure solution
    Pas encore vu ces choses... tuto ?

    C'est quand même un brin compliqué à prendre en main ce Zend_Framework !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Concernant la question de l'autochargement (vu que apparemment tu peux modifier tout ce que tu veux dans ton projet), il faudrait que tu fasses quelque chose comme ca dans ton bootstrap (sachant que toutes tes méthodes commencant par _initXXX seront automatiquement lancées) :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    protected function _initAutoloader() {
    // Ici on crée un autoloader du répertoire APPLICATION_PATH (repertoire application défini par défaut dans index.php
            $resourceLoader = new Zend_Loader_Autoloader_Resource(array(
                        'basePath' => APPLICATION_PATH,
                        'namespace' => 'Phil',
                    ));
     
            $resourceLoader->addResourceType('nomArbitraire', 'phil', 'monPrefix');
     
            return $resourceLoader;
        }

    Zend_Loader_Autoloader_Resourse::addResourceType() prend trois arguments: le "type" de resource (une chaine arbitraire), le chemin sous le chemin de base dans lequel le type de ressource doit se trouver, et le préfixe particulier à utiliser pour ce type de ressource.
    Ainsi dans une action, tu pourras instancier sans include/require la classe Phil_monPrefix_ceQueTuVeux.
    Phil->préfixe général de tes classes, peut être vide (namespace=>'')
    monPrefix->le préfixe particulier de tes classes dans ta ressource située dans le chemin phil

    Aide complémentaire (car pas forcément facile à comprendre au début...)

    intérêt : plus aucun besoin d'include/require car le nom de tes classes respectent un certains pattern (namespace, prefixe etc...)
    désavantage : un peu plus long à l'exécution

Discussions similaires

  1. Message d'erreur "explorasi.exe" non trouvé
    Par hocine dans le forum Windows XP
    Réponses: 1
    Dernier message: 25/10/2007, 18h57
  2. Erreur : Classe TStoredProc non trouvée
    Par Sunchaser dans le forum C++Builder
    Réponses: 1
    Dernier message: 24/11/2006, 00h03
  3. bdd : erreur 3265 élément non trouvé dans cette collection
    Par morgan47 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 10/07/2006, 09h52
  4. Erreur de "Élément non trouvé dans cette collection"
    Par charleshbo dans le forum Access
    Réponses: 4
    Dernier message: 04/05/2006, 18h42
  5. [Debutant][Install][VS]erreur sur fichier non trouvé.
    Par silvermoon dans le forum DirectX
    Réponses: 4
    Dernier message: 16/07/2004, 20h59

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