Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/02/2011, 15h17   #1
Membre régulier
 
Homme Yannick Merienne
Étudiant
Inscription : novembre 2010
Messages : 85
Détails du profil
Informations personnelles :
Nom : Homme Yannick Merienne
Âge : 20
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2010
Messages : 85
Points : 96
Points : 96
Par défaut problème scrf_token required

Bonjour,
J'ai un problème avec mon formulaire de connexion qui marche parfaitement bien sans validator mais qui me dit "scrf_token required" lorsque je met mes validators. Je n'ai pas d'erreur mais je reste bloqué sur la page de connexion. voici les morceaux de code qui peuvent être intéressant :
Dans le connexionForm.class.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class connexionForm extends sfForm
{
	public function configure()
	{
		$this->setWidgets(array(
			    'login' => new sfWidgetFormInputText(),
			    'mdp' => new sfWidgetFormInputPassword()
		    )); 
			$this->widgetSchema->setLabels(array(
				'login' =>'login',
				'mdp' =>' mot de passe'
				));		
 
		$this->setValidators(array(
		'login' => new sfValidatorString(array('required' => true)),
		'mdp' => new sfValidatorString(array('required' => true)),
		));
	$this->widgetSchema->setNameFormat('connexion[%s]');
	$this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
	}
}
Dans l'action.class.php :
Code :
1
2
3
4
5
6
$this->connexionForm = new connexionForm();
 
  if($request->isMethod('post'))
	{
	$this->connexionForm->bind($request->getParameter('connexion'));
	if($this->connexionForm->isValid()){
Dans le template indexSuccess.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<form action="<?php echo url_for('Connexion/index');?>" method="POST" enctype="multipart/form-data">
<table>
<?php echo $connexionForm['login']->renderError() ?>
<p><?php echo $connexionForm['login']->renderLabel() ?><?php echo $connexionForm['login'] ?></p>
<?php echo $connexionForm['mdp']->renderError() ?>
<p><?php echo $connexionForm['mdp']->renderLabel() ?><?php echo $connexionForm['mdp'] ?></p>
<?php echo $connexionForm->renderHiddenFields() ?>
	<tr> 
		<td colspan="2"> 
			<input type="submit" value="Connexion" /> 
		</td>
	</tr>
</table>
</form>
Voila pour le code.
Comme vous pouvez le voir j'ai essayé de m'inspiré de la conversation qui date de 2009 sur le même sujet mais sans succès...
Merci d’avance pour le temps passer sur mon problème.
darkcrift est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2011, 18h41   #2
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Dommage, je n'aurais pas droits à un merci

C'est une erreur classique. Ton formulaire attend un CSRF_Token qui est obligatoire (required) mais qui ne lui parvient pas. C'est un système de sécurité embarqué par défaut dans les forms et qui permet d'éviter qu'un form reviennent rempli (par un pirate) sana qu'il lui ait été envoyé auparavant.

Le problème chez toi est qu'il attend un champ avec ce token et qu'il ne le voit pas arriver. Il considère donc que tu es un pirate

Le jeton est ajouter automatiquement dans les widget dans un champ caché et un validateur est ajouté de la même manière.

Bon, mais pourquoi cela ne marche pas ? Dans ton formulaire, tu ne génères pas les champs caché dans ton form, hors le token est dans un champs caché. Rajoute un
Code :
<?php echo $connexionForm->renderHiddenFields() ?>
dans le form et tous va rentrer dans l'ordre.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 13h48   #3
Membre régulier
 
Homme Yannick Merienne
Étudiant
Inscription : novembre 2010
Messages : 85
Détails du profil
Informations personnelles :
Nom : Homme Yannick Merienne
Âge : 20
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2010
Messages : 85
Points : 96
Points : 96
Bonjour,
Merci pour la rapidité de ta réponse.
Ce que je vais dire est surement bête mais il me semble que je l'ai mis justement.
Dans mon code dans le template "indexSuccess.php" à la ligne 6 j'ai mis
Code :
<?php echo $connexionForm->renderHiddenFields() ?>
Je ne le met peut être pas au bon endroit ?...
Deplus dans la barre de débug je n'est plus de "required" devant le "_scrf_token". N'est il pas possible que le token passe correctement mais qu'il y est un problème dans le action.class.php avec le "if"??
cordialement
darkcrift est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 14h24   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Ce que tu dis me fait baigner dans un océan de perplexité...

Questions 1 : As-tu bien dans ton html généré le hiden du csrf ?

Il semblerait que, dans ton template, tu n'affiches pas les erreurs générales.

Si tu n'as plus de message d'erreur c'est peut-être parce qu'il n'y en a plus ?

A priori, tu laisses entendre que cela ne marche toujours pas, mais qu'est-ce qui ne marche pas maintenant ?

Tu parles d'un if qui serait source de problème, hors il y a deux if, très classiques et il manque la fin du code, que je remplis par les fermetures d'usage. Il manque, peut-être une redirection vers un autre écran.

Pourrais-tu être plus explicite sur ce qui ne fonctionne pas ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 19h09   #5
Membre régulier
 
Homme Yannick Merienne
Étudiant
Inscription : novembre 2010
Messages : 85
Détails du profil
Informations personnelles :
Nom : Homme Yannick Merienne
Âge : 20
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2010
Messages : 85
Points : 96
Points : 96
Désolé pour le manque de précision.
J'ai réussi à résoudre mon problème qui était en réalité que j'avais oublié de modifier tout les getParameter dans mon action.class.php. Les vérifications avec les données de la base de données ne se faisaient donc pas et forcément la redirection vers le menu utilisateur non plus... Le scrf_token lui passait parfaitement bien.
Merci pour l'aide apporté et la rapidité de tes réponses.
cordialement.
darkcrift est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 23h41   #6
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
On est passé d'un truc ou tout marchait sauf le token à un ou rien ne marchait sauf le token

Vite du paracetamol, je glisse...
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h13.


 
 
 
 
Partenaires

Hébergement Web