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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    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 éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

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

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    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 expérimenté
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    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 expérimenté
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    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 éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

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

+ 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