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

Symfony PHP Discussion :

csrf token: Required [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 79
    Points : 87
    Points
    87
    Par défaut csrf token: Required
    Bonjour,

    J'ai un petit soucis avec mes formulaires de contact depuis le dernier update de symf (1.2.7).

    $this->form->isValid() me retourne constamment false.

    si je fait un echo $form->renderGlobalErrors(), il me renvoie :
    csrf token: Required.

    Etant donnée que je design mon form manuellement, j'ai bien ajouter:
    echo $form->renderHiddenFields()
    qui m'affiche bien l'input avec la key de securité.

    Malgré tout cela, isValid me retourne toujours false, et il y a toujours la GlobalError.

    Quelqu'un aurait il eu un problème similaire?

    Je vous joint le code de mon form:

    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
      <form action="<?php echo url_for('contact/index') ?>" method="post">
          <?php echo $form['company']->renderError() ?>
          <p><?php echo $form['company']->renderLabel() ?><?php echo $form['company'] ?></p>
          <?php echo $form['first_name']->renderError() ?>
          <p><?php echo $form['first_name']->renderLabel() ?><?php echo $form['first_name'] ?></p>
          <?php echo $form['last_name']->renderError() ?>
          <p><?php echo $form['last_name']->renderLabel() ?><?php echo $form['last_name'] ?></p>
          <?php echo $form['adresse']->renderError() ?>
          <p><?php echo $form['adresse']->renderLabel() ?><?php echo $form['adresse'] ?></p>
          <?php echo $form['zip_city']->renderError() ?>
          <p><?php echo $form['zip_city']->renderLabel() ?><?php echo $form['zip_city'] ?></p>
          <?php echo $form['phone']->renderError() ?>
          <p><?php echo $form['phone']->renderLabel() ?><?php echo $form['phone'] ?></p>
          <?php echo $form['email']->renderError() ?>
          <p><?php echo $form['email']->renderLabel() ?><?php echo $form['email'] ?></p>
          <?php echo $form['message']->renderError() ?>
          <p><?php echo $form['message']->renderLabel() ?><?php echo $form['message'] ?></p>
          <?php echo $form->renderHiddenFields() ?>     
          <p><input type="submit" value="Envoyez" /></p>   
      </form>
    action.class.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        $this->form = new ContactForm();    
        if ($request->isMethod('post'))
        {
          $this->form->bind($request->getParameter('contact'));      
          if ($this->form->isValid())
          {
              //do something
          }
        }
    et si jamais ma class ContactForm:

    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
    class ContactForm extends sfForm
    {
      public function configure()
      {
        $this->setWidgets(array(
          'company'    => new sfWidgetFormInput(),
          'first_name'    => new sfWidgetFormInput(),
          'last_name'    => new sfWidgetFormInput(),
          'adresse'   => new sfWidgetFormInput(),
          'zip_city'   => new sfWidgetFormInput(),
          'phone'   => new sfWidgetFormInput(),
          'email'   => new sfWidgetFormInput(),
          'message' => new sfWidgetFormTextarea()
        ));
     
        $this->widgetSchema->setLabels(array(
          'company'    => 'Entreprise',
          'first_name'    => 'Nom',
          'last_name'    => 'Pr&eacute;nom',
          'adress'    => 'adresse',
          'zip_city'    => 'NPA/Ville',
          'phone'    => 'T&eacute;l.',
          'email'   => 'Email',
          'message' => 'Message'
        ));    
        $this->setValidators(array(
          'company'    => new sfValidatorString(array('required' => false)),
          'adresse'    => new sfValidatorString(array('required' => false)),
          'zip_city'    => new sfValidatorString(array('required' => false)),
          'phone'    => new sfValidatorString(array('required' => false)),
          'first_name' => new sfValidatorString(array('required' => false)),
          'last_name' => new sfValidatorString(array('required' => false)),
          'email'   => new sfValidatorEmail(array('required' => false)),
          'message' => new sfValidatorString(array('required' => false)),
        ));
      }
    }

    Edit: Je tiens a préciser que si j'enlève la csrf_secret de mes settings, le formulaire fonctionne correctement

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 117
    Points : 123
    Points
    123
    Par défaut
    Dans ton _form.php essaye de mettre ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $form['_csrf_token']; ?>

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 66
    Points : 82
    Points
    82
    Par défaut
    Le Widget est censé être présent puisqu'il passe le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $form->renderHiddenFields()
    Par contre comme ton formulaire est hérité de sfForm et que tu as définis la stratégies scrf il faut que tu rajoutes a la fin de ta fonction configure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $this->widgetSchema->setNameFormat('contact[%s]');
     
    $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
    Normalement ca devrait marcher.

  4. #4
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 79
    Points : 87
    Points
    87
    Par défaut
    Hello,

    Merci pour vos réponses, tous est ok.

    Merci de votre aide

  5. #5
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut bonsoir,
    dites nous comment vous avez fait? j'ai fait exactement pareil et ça marche pas!

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 42
    Points : 34
    Points
    34
    Par défaut
    Il faut rajouter:

    $this->widgetSchema->setNameFormat('XXXXXX[%s]');

    dans ton XXXXXForm.class.php

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 212
    Points : 108
    Points
    108
    Par défaut
    Ben pour cela ne fonctionne pas.

  8. #8
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Heu, le sujet date de mai 2009 les gars !

    Et le demandeur à dit en mai 2009 que ça marchait.

    Et il a marquer le sujet résolu.

    On peu peut-être le laisser retourner au cimetière des sujets passés ? non ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 212
    Points : 108
    Points
    108
    Par défaut
    Oui effectivement c' était pour éviter de poster sur le même sujet.

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

Discussions similaires

  1. [1.x] csrf token: Required. et admin generator
    Par jejeman dans le forum Symfony
    Réponses: 7
    Dernier message: 16/02/2012, 22h04
  2. [1.x] Admin generator csrf token: Required.
    Par shakly dans le forum Symfony
    Réponses: 5
    Dernier message: 17/09/2011, 12h07
  3. [1.x] symfony csrf token: Required.
    Par benhsaien dans le forum Débuter
    Réponses: 4
    Dernier message: 14/06/2011, 15h59
  4. [1.x] csrf token required : erreur dans le modèle ?
    Par cli16 dans le forum Symfony
    Réponses: 3
    Dernier message: 27/04/2010, 13h43
  5. [1.x] csrf token: Required
    Par fatbob dans le forum Symfony
    Réponses: 2
    Dernier message: 23/02/2010, 20h44

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