Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Débutant sur zend framework 1.9, j'aimerai avoir votre avis sur la structure suivante
Je suis en train de faire un tout petit système d'authentification (basique, login+mdp)
index.phtml -> contient la vue de mon formulaire
Le controleur index et l'action indexAction() ne font que récupérer les données en les filtrants ($_POST['login'] && $_POST['pass']..), de la je ne sais pas quelle est la meilleure méthode :
1. Rediriger vers un controleur ident qui s'occupera de toutes les authentification de tout le site via _forward
2. Mettre dans l'action du formulaire de la vue $this->url + ident/ qui ferra ensuite les redirections
(Grosso modo cela donne :
Solution 1 :
S'il n'y aucun problème (pas de données invalides)
/index/indexAction --> Post du formulaire, forward du controleur vers le controleur /ident/identAction/
Sinon, on ne passe meme pas dans le forward et on laisse la vue et le formulaire tel quel (sur indexAction)
Solution 2 :
/index/indexAction ---> Post du formulaire --> envoi des données vers /ident/indexAction
Si échec rediriger le contrôleur (ou la vue) vers indexAction par défaut (en enregistrant les variables pour afficher des messages d'erreurs, genre login invalide (Zend::session ou registry ?)
Dans le cas de la solution deux je rencontre une erreur 500 Internal alors que le .htaccess est celui d'origine de ZF (dossier public) et que les fichiers sont tous présents dans les répertoires correctement nommés. (avec WAMP). Pourquoi mondomaine.com/index/index/ marche alors que mondomaine.com/ident/index/ ne marche pas.. je ne comprends pas (erreur 500 internal error) (url par défaut, dossier par défaut).
mondomaine.com renvoi vers le dossier public directement.
mondomaine.com d:/perso/public/ soit /
Ce qui me plait dans l'idée de faire un controleur ident c'est qu'il s'agit d'un point central, toutes les authentifications doivent passer par ce point. J'ai pas envie de le mettre dans le controleur index pour ne pas le surcharger.
Qu'en pensez vous ?
PS : Pour utiliser un modèle, il faut l'appeller ou il s'appelle automatiquement avec le meme nom de l'action ?
Merci bp
Dernière modification par xenesis (25-08-2009 15:18:19)
Hors ligne
Voici en fait le fond du problème :
mondomaine.com/controleur/action/
Autre que le controlleur index j'ai le droit à un joli server error 500.. je ne comprends pas d'ou ca peut venir.
J'utilise wamp. L'htacess est celui de base et tous les fichiers sont là. (Arboresence de base).
De même concernant ma question, qu'est ce qui vous semble le mieux ?
Faire un action form /ident/auth (controleur Ident, action Auth) ou refresh la page sur elle même et vérifier if isset($BoutonPousse) forward -> controleur ident..
Merci
Hors ligne
Je vais devenir dingue
http://localhost/ident/ (contrôleur ident)
"Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, admin@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log."
L'htaccess dans /public :
SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Le virtualhost
Alias / "d:/zend/public/"
<Directory "d:/zend/public/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
http://localhost/index/ marche
http://localhost/index.php/ident/ident/ marche
(contrôleur ident action ident)
Alors pourquoi
http://localhost/ident/ident/ ne marches pas ?
Je ne comprends pas. Le htaccess n'est pas bon ?
A quoi sert ces lignes ?
RewriteRule ^.*$ - [NC,L] (surtout celle la)
RewriteRule ^.*$ index.php [NC,L]
Grosso modo de ce que j'ai compris
RewriteCond %{REQUEST_FILENAME} -d -s -l si l'URI désigne un répertoire, un lien symbolique ou un un fichier alors on ne fait rien
(RewriteRule ^.*$ - [NC,L]) (pourquoi "-" ???)
Sinon on redirige vers index.php
Dans mon cas /ident/ n'existe pas a la racine mais bien dans le contrôleur .. pourquoi il ne passe donc pas à l'index ?
En suivant cette logique : je viens de faire un fichier toto.txt a la racine du site (dans public donc..)
http://localhost/toto.txt devrait être accessible directement ... error 500
Si quelqu'un peut m'expliquer..
Hors ligne
Bon.. j'ai desinstallé wamp et mis easy php et la tout marche..
Ca vient donc de la config de wamp (j'ai activité mod_rewrite)
Si quelqu'un as quand meme une idée pour l'installation correcte de Zend Framework 1.9.2 sous wamp s'il peut la partager ca serait super sympa..
Hors ligne