Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'essaie de réaliser une authentification via bdd toute simple.
Mon code fonctionne sans problème en local, mais sur le serveur de production quelque chose coince avec IE(6 et 8 au moins). Le code fonctionne avec FF et Chrome.
D'après les tests que j'ai effectué, l'authentification fonctionne sans problème, et les données utilisateurs sont enregistrées, mais dès que j'effectue une redirection vers une autre page... plus rien.
Voilà le code du controlleur qui se charge de l'identification. J'utilise le stockage des persistances par défaut.
class AuthController extends Zend_Controller_Action implements Zend_Acl_Resource_Interface { public $_authAdapter; public function init() { $dbTableUtilisateur = new Default_Model_DbTable_Utilisateur(); $this->_authAdapter = new Zend_Auth_Adapter_DbTable($dbTableUtilisateur->getDefaultAdapter()); $this->_authAdapter ->setTableName('utilisateur') ->setIdentityColumn('nom_utilisateur') ->setCredentialColumn('mot_de_passe'); $this->_helper->layout->disableLayout(); } public function loginAction() { $form = new Default_Form_Login(); $request = $this->getRequest(); if ($request->isPost()) { if ($form->isValid($request->getPost())) { $auth = Zend_Auth::getInstance(); $this->_authAdapter->setIdentity($form->nom_utilisateur->getValue()) ->setCredential($form->mot_de_passe->getValue()); $resultat = $auth->authenticate($this->_authAdapter); switch ($resultat->getCode()) { case Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND: echo('identity not found'); $form->setDescription('identity not found'); break; case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID: echo('Invalid credentials provided'); $form->setDescription('Invalid credentials provided'); break; case Zend_Auth_Result::SUCCESS: $this->_helper->redirector('index', 'index', 'default'); break; default: /** autres cas **/ break; } } } $this->view->form = $form; } }
Hors ligne
Salut,
C'est quoi l'url de ton site en local ?
Quelle config. pour ta session (path, domain, etc) ?
A+ benjamin.
Hors ligne
J'accède à mon site en local via : http://localhost/crm/public/
Voilà la section Session de mon phpinfo() en local
session Session Support enabled Registered save handlers files user sqlite Registered serializer handlers php php_binary wddx Directive Local Value Master Value session.auto_start Off Off session.bug_compat_42 On On session.bug_compat_warn On On session.cache_expire 180 180 session.cache_limiter nocache nocache session.cookie_domain no value no value session.cookie_httponly Off Off session.cookie_lifetime 0 0 session.cookie_path / / session.cookie_secure Off Off session.entropy_file no value no value session.entropy_length 0 0 session.gc_divisor 100 100 session.gc_maxlifetime 1440 1440 session.gc_probability 1 1 session.hash_bits_per_character 5 5 session.hash_function 0 0 session.name PHPSESSID PHPSESSID session.referer_check no value no value session.save_handler files files session.save_path C:\xampp\xampp\tmp C:\xampp\xampp\tmp session.serialize_handler php php session.use_cookies On On session.use_only_cookies Off Off session.use_trans_sid 0 0
et celle de mon serveur (mutualisé)
session Session Support enabled Registered save handlers files user sqlite Registered serializer handlers php php_binary Directive Local Value Master Value session.auto_start Off Off session.bug_compat_42 On On session.bug_compat_warn On On session.cache_expire 60 60 session.cache_limiter nocache nocache session.cookie_domain no value no value session.cookie_httponly Off Off session.cookie_lifetime 86400 86400 session.cookie_path / / session.cookie_secure Off Off session.entropy_file no value no value session.entropy_length 0 0 session.gc_divisor 500 500 session.gc_maxlifetime 1440 1440 session.gc_probability 1 1 session.hash_bits_per_character 4 4 session.hash_function 0 0 session.name PHPSESSID PHPSESSID session.referer_check no value no value session.save_handler files files session.save_path /php_sessions /php_sessions session.serialize_handler php php session.use_cookies On On session.use_only_cookies Off Off session.use_trans_sid 0 0
bon j'y connais pas grand chose en config serveur si tu as besoin d'autre chose, il va falloir me dire ou le trouver :s
Dernière modification par Bunker (11-05-2010 18:35:58)
Hors ligne
Salut,
Je te conseille même en local de créer soit des alias soit des virtualhost dans apache. Je préfère la seconde solution qui est un peu moins rapide à mettre en place (mais c'est relatif :p).
Voilà comment je fais :
httpd.conf :
Include conf/extra/httpd-vhosts-dev.conf
conf/extra/httpd-vhosts-dev.conf :
######################################### ## Mon site Zend de test ## local.zend-test.com ######################################### <VirtualHost *:80> SetEnv APPLICATION_ENV development ServerName local.zend-test.com ServerAdmin xxxxxx@gmail.com DocumentRoot "F:/PHPServer/Zend/Apache2/htdocs/zend-test/www" <Directory "F:/PHPServer/Zend/Apache2/htdocs/zend-test/www"> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L] Options -Indexes FollowSymLinks MultiViews ExecCGI AllowOverride none Order allow,deny allow from all </Directory> </VirtualHost>
et enfin dans le fichier hosts (dans windows/system32/drivers/etc/) :
127.0.0.1 local.zend-test.com
En oubliant pas de rebooter apache bien sûr
Pour les sessions, je configure toujours l'option cookie_domain pour être certain que tout fonctionne correctement (mais c'est pas obligatoire je pense).
app.ini
;====== Resource session resources.session.name = NOMUNIQUE resources.session.use_only_cookies = true resources.session.cookie_path = "/" resources.session.save_path = APPLICATION_PATH "/../var/sessions" resources.session.cookie_domain = ".zend-test.com" ; à changer dans la section production ; 2 weeks resources.session.remember_me_seconds = 1209600 ; Garbage collector resources.session.gc_probability = 1 resources.session.gc_divisor = 100 resources.session.gc_maxlifetime =
A+ benjamin.
Hors ligne
Pages: 1