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 Framework PHP Discussion :

post de formulaire non pris en compte ie678, safari, chrome android [ZF 1.9]


Sujet :

Zend Framework PHP

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Points : 233
    Points
    233
    Par défaut post de formulaire non pris en compte ie678, safari, chrome android
    bonjour,

    j'ai fais un simple formulaire, ainsi qu'un controller de login, tout ce qu'il y a de plus simple quoi. cela fonctionne sous FF et opera voir chromium, mais bizarrement le post n'est pas renvoyé vers ma page login sous ie678, safari et chrome android... pourtant l'objet est crée dans ma page login!?!

    un peu de code car je ne suis peut-etre pas claire

    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
    class LoginController extends Zend_Controller_Action
    {
        public function init() {
    	// recuperation des variables utiles
    	$controller = $this->getRequest()->getParam('controller'); 
    	$translation = Zend_Registry::get('translator');
    	$this->view->translator = $translation;
     
    	// creation du sous-menu       
    	$this->view->submenu = array( index => $translation->_("message35"),
    								  subscribe => $translation->_("message15")      
    	);
     
    	// renvoi le sous-menu à la vue  
    	$this->renderScript('common/submenu.phtml', 'submenu');   
     
    	// par défaut un appel à render() annule le rendu automatique       
    	// restauration du rendu via le helper viewRenderer.     
    	// (cette action rend une vue)        
    	$this->_helper->viewRenderer->setNoRender(false);	   
     
    	//affiche le formulaire de connexion
    	$form = new Form_LoginForm();       
    	$this->view->form = $form;
        }
     
    	public function indexAction() {
            if ($this->_request->isPost()) {
    			$formData = $this->_request->getPost();    		
    			$auth = Zend_Auth::getInstance();
    			$db = Zend_Db_Table_Abstract::getDefaultAdapter();
    			$dbAdapter = new Zend_Auth_Adapter_DbTable($db);
    			$dbAdapter->setTableName('users')
    					  ->setIdentityColumn('login')
    					  ->setCredentialColumn('passwd');
    			$dbAdapter->setIdentity($formData['username'])
    					  ->setCredential(md5($formData['password']));
    			$result = $auth->authenticate($dbAdapter);
     
    			if ($result->isValid()) {
    				$data = $dbAdapter->getResultRowObject(null, 'password');
    				$auth->getStorage()->write($data);
    				$identity = Zend_Auth::getInstance()->getIdentity();
    				$session = new Zend_Session_Namespace('id');
    				$session->id = $identity->id; 
     
    				// Définition du timezone en fonction de l'utilisateur
    				$conf = new Model_DbTable_Conf();
    				$id = $session->id;
            		$info = $conf->find($id)->current();
    				$session->timezone = $info->timezone;
     
    				$this->_redirect('/main');
    			}else{
    				$translation = Zend_Registry::get('translator');
    				echo $translation->_("message14");
     
    			}
    		}
        }
    en gros j'appel mon formulaire dans la fonction init, pis je traite le resultat du post dans ma fonction index de la class login.

    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
    <?php 
    class Form_LoginForm extends Zend_Form
    {
        public function __construct($options = null)
    	{
    		parent::__construct($options);
        	$translation = Zend_Registry::get('translator');
     
        	$username = new Zend_Form_Element_Text("username");
        	$username->setLabel($translation->_("message3"))
        			 ->addFilter('StripTags') //Enlève les caractères HTML
        		     ->addFilter('StringTrim')// Enlève les espaces dans la chaîne de caractère
        		     ->addFilter('StringToLower')
        		     ->addValidator('NotEmpty') // Vérifie si la chaine existe
        		     ->addValidator('StringLength', false, 5, 15) //Vérifie la longeur de la chaine de caractère
        		     ->addValidator('Alnum')
        	;
     
        	$password = new Zend_Form_Element_Text("password");
        	$password->setLabel($translation->_("message4"))
        			 ->addFilter('StripTags') //Enlève les caractères HTML
        		     ->addFilter('StringTrim')// Enlève les espaces dans la chaîne de caractère
        		     ->addValidator('NotEmpty') // Vérifie si la chaine existe
        		     ->addValidator('StringLength', false, 5, 10) //Vérifie la longeur de la chaine de caractère
        		     ->addValidator('Alnum')
        	;
     
            // We want to display a 'failed authentication' message if necessary;
            // we'll do that with the form 'description', so we need to add that
            // decorator.
            $this->setDecorators(array('FormElements',
                				 array('HtmlTag',
                				 array('tag' => 'dl', 'class' => 'zend_form')),
                				 array('Description', 
                				 array('placement' => 'prepend')),'Form'
            ));
     
        	$login = new Zend_Form_Element_Submit("login");
            $login->setLabel($translation->_("message6"));
     
        	$this->addElements(array($username,$password,$login));
        }
    }
    mon formulaire... tout bete quoi

    je recapitule donc:

    sous ff et opera etc...
    je rentre mon login
    je post
    je suis validé
    puis redirigé vers mon controller "main"

    sous ie et safari etc...
    je rentre mon login
    je post
    je me retrouve sur le controller index, comme si par defaut on me ramenait à la racine du site

    j'ai bien cherché du coté d'une perte de session mais je ne vois pas. lorsque je suis redirigé sur la page index l'entête http est 200 ...
    si qqn à une idée parceque la je séche

    merci d'avance et pardon pour ce post brouillon

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Points : 97
    Points
    97
    Par défaut
    Tu peux nous montrer le code html générer par Zend_Form ?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Points : 233
    Points
    233
    Par défaut
    pardon de ne pas avoir répondu plus tot, je pensais recevoir un mail en cas de réponse et ce ne fut pas le cas

    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
    <html>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        <head>
           <base href="http://www.domaine.com/" />
           <meta http-equiv="Content-Type" content="text/html ; charset=utf-8" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <meta http-equiv="lang" content="fr" />
    <meta http-equiv="imagetoolbar" content="no" />
    <meta name="generator" content="ZendFramework 1.9" />
    <meta name="language" content="fr" /><link href="images/favicon.ico" rel="favicdojoon" type="image/x-icon" /><title></title><style type="text/css" media="screen">
    <!--
    @import "css/styles.css";
    -->
    </style>   
        </head>
     
        <body>
            <div id="mainframe">    
                <div id="header">
     
    <span class="banner"><a href="http://www.domaine.com"><img alt="Butt Counter - Try to keep control" src="http://www.domaine.com/img/banner.jpg"></a></span>
     
                </div>
                <div id="submenu" style="display: none">
                    <script language="javascript"><!-- 
      document.getElementById('submenu').style.display = 'block';
    // -->
    </script>
    <div id="submenu">    
                <span class="butt_index"><a href="http://www.domaine.com/">Index</a></span>
     
                                        <span class="butt_suscrib"><a href="http://www.domaine.com/subscribe">Inscription</a></span>
            </div>
     
                <div id="content">    
                    <form enctype="application/x-www-form-urlencoded" action="" method="post"><dl class="zend_form">
    <dt id="username-label"><label for="username" class="optional">Connexion</label></dt>
    <dd id="username-element">
    <input type="text" name="username" id="username" value="" /></dd>
    <dt id="password-label"><label for="password" class="optional">Mot de passe</label></dt>
    <dd id="password-element">
    <input type="text" name="password" id="password" value="" /></dd>
    <dt id="login-label">&nbsp;</dt><dd id="login-element">
    <input type="submit" name="login" id="login" value="Validez" /></dd></dl></form> 
        </body>
    </html>
    perso je ne vois rien de particulier, et pour avoir verifié, j'ai la même génération qqsoit le navigateur (normal me direz-vous)

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Points : 233
    Points
    233
    Par défaut
    arf, je viens de faire un test basique auquel je n'avais pas pensé...
    pour rappel lorsque je valide mon formulaire dans ma page login, le resultat du post est traité dans mon controlleur login qui doit redirigé aprés validation au controlleur main, or le probléme avec certain navigateur est que je suis redirigé directement sur mon controlleur index. et je viens de m'apercevoir que mon post est bien transmis à mon controlleur index... du coup je me demande si je ne vais pas "aussi" traité le resultat du poste dans le controlleur index... certes cela fonctionnerais mais ce n'est pas tres propre et pis surtout cela ne me semble pas bien normal

    bref j'ai une solution bancale, mais si qqn sait pourquoi je prends

    bon bah je continue à chercher

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Points : 233
    Points
    233
    Par défaut
    bon , j'avance... vers pas grand chose

    si safarii redirige vers le controlleur index et recois bien le post, sous chrome android je suis bien redirigé sur le controlleur login mais m'indique qu'il n'y as pas de post...

    je comprends plus rien. comment ce fait t'il que ce simple code, issue d'un framework ne soit pas traité de la même façon par tous les navigateur?!? (or ie6 biensur...)

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Points : 97
    Points
    97
    Par défaut
    Tu peux nous monter ton controller Login ?

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Points : 233
    Points
    233
    Par défaut
    il est dans mon premier post, le premier code, "LoginController"

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Points : 233
    Points
    233
    Par défaut
    aprés une bonne nuit de sommeil, je viens de trouver ma premiere solution !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $form = new Form_LoginForm();
    $form->setAction(login);       <==============
    $this->view->form = $form;
    je precise à qui s'adresse mon post

    c'étais tout simple...

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Points : 97
    Points
    97
    Par défaut
    Oups pardon....Mais le samedi matin avant le second café.....


    Essaye 2 choses:

    1/ Enlever tous le code dans l'action index du controller Login en affichant juste le résultat du post pour voir si les problème viennent de là.
    2/ Ajouter un setAction() à ton formulaire pour le forcer à poster sur le controller Login

    Sinon tu n'aurais pas de plugins qui pourrais gêner ?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Points : 97
    Points
    97
    Par défaut
    J'ai pas répondu assez vite lol

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Points : 233
    Points
    233
    Par défaut
    mais tu m'a répondu et ça c'est

    en fait un forum, c'est un peu comme une thérapie, tu viens chercher des réponses auprés d'une personne qui te force à trouver les réponses toi même

    toujours est-il que j'installe le sdk d'android pour emuler le navigateur et tester plus simplement.

    j'hesite me à clore le post même s'il n'est qu'en partie resolu pour ne pas le rendre trop bouillon, quitte à en faire un nouveau, restreint à mon dernier probléme?

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Points : 233
    Points
    233
    Par défaut
    etonnement mon site fonctionne sur l'émulateur du coup je me demande si le probleme ne viens pas de mon telephone...

    en tous le cas je clos le post.

    merci de ton aide openaccess

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Points : 97
    Points
    97
    Par défaut
    De rien

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

Discussions similaires

  1. Formulaire/ json / Js : Input non pris en compte
    Par CocoFlouq dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 20/03/2015, 14h44
  2. Réponses: 2
    Dernier message: 06/09/2010, 14h11
  3. [MySQL] probleme champ formulaire non pris en compte
    Par stefanelle dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/08/2009, 11h53
  4. Css non pris en compte sur safari 2
    Par orphen dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 28/08/2008, 17h45
  5. [event] keyListener non pris en compte
    Par pierre.zelb dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 03/08/2005, 08h35

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