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 21/11/2011, 18h08   #1
Futur Membre du Club
 
Femme
Inscription : novembre 2011
Messages : 41
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : novembre 2011
Messages : 41
Points : 17
Points : 17
Par défaut Problème de récupération variable dans URL

Bonjour à tous,

J'essaie de valider l'inscription de mes futurs utilisateurs par un email contenant une clé d'activation, mais je n'arrive pas à récupérer cette clé d'activation dans l'url je ne sais pas trop pourquoi...

Donc j'envoie un email avec dedans:
Code :
<?php echo url_for('http://nom_mon_site?activation_key='.$activation_key); ?>
L'email arrive bien (hotmail ne prend pas cela comme un lien url alors que gmail oui, mais c'est un autre problème...) et ensuite j'essaie de récupérer l'activation key, pour le comparer avec un activation_key_bis généré automatiquement lorsque l'utilisateur se logue avec le Signin.

Code :
1
2
3
4
5
6
7
8
9
10
public function executeIndex() {
$this->activation_key = $request->getParameter('activation_key');
....
//test comparaison quand on valide le formulaire Signin:
if ($this->formLogin->isValid()){
....
   if ($this->activation_key == $activation_key_bis){
       $this->getUser()->signIn (...)}
   else {
       $this->error_status='1';}
Et dans mon fichier routing.yml
Code :
1
2
3
4
 
homepage:
  url: /:activation_key
  param: {module: home, action: index, activation_key: ~
Je sais que ce sujet a été traité sur ce forum avec une histoire de token mais je n'arrive pas quand même à résoudre mon problème...


J'espère que quelqu'un pourra me mettre sur une piste.

Merci beaucoup en tout cas,
MissJu
missJu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 11h30   #2
Membre chevronné
 
Avatar de kenny.kev
 
Homme
Inscription : janvier 2007
Messages : 574
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 574
Points : 688
Points : 688
Envoyer un message via MSN à kenny.kev
Bonjour à toi,

Voici un lien qui permettra de répondre à presque toutes les questions que tu as posé :
http://www.symfony-project.org/jobee...Doctrine/en/05
kenny.kev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 18h33   #3
Futur Membre du Club
 
Femme
Inscription : novembre 2011
Messages : 41
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : novembre 2011
Messages : 41
Points : 17
Points : 17
Merci beaucoup pour la réponse.

J'avais dejà regardé ce lien mais je n'arrive toujours pas à trouver la réponse à ma question...

Il ne s'agit pas d'une route représentée par des objets Doctrine mais d'une variable ajoutée à un lien. Je n'arrive pas à la récupérer avec getParameter('ma_variable'), ce qui semble être la manière de faire...

Aurais-tu une idée?

(ps: j'ai aussi essayé avec $_GET['ma_variable'], et j'ai undefined index ma_variable... comme erreur)
missJu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 09h56   #4
Membre chevronné
 
Avatar de kenny.kev
 
Homme
Inscription : janvier 2007
Messages : 574
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 574
Points : 688
Points : 688
Envoyer un message via MSN à kenny.kev
Ok,

Alors, je t'avais transmit ce lien parce qu'en fait tout viens de la base. Je m'explique :
Code php :
<?php echo url_for('http://nom_mon_site?activation_key='.$activation_key); ?>
N'est déjà pas bon, tu devrais avoir soit :
Code php :
<?php echo url_for('@homepage/'.$activation_key); ?>
ou bien :
Code php :
<?php echo url_for('home/index/'.$activation_key); ?>
ou encore :
Code :
<?php echo url_for('@homepage?activation_key='.$activation_key); ?>
Ensuite dans le routing.yml :
tu dois avoir :
Code yaml :
1
2
3
homepage:
  url: /:activation_key
  param: {module: home, action: index}

Et la tout fonctionne.
Tout ce que je viens de t'écrire viens du paragraphe : Route Customizations du précédent lien.

Bon courage pour la suite.
kenny.kev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 11h07   #5
Membre chevronné
 
Avatar de kenny.kev
 
Homme
Inscription : janvier 2007
Messages : 574
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 574
Points : 688
Points : 688
Envoyer un message via MSN à kenny.kev
il manque aussi la déclaration de l'action :
Code :
public function executeIndex(sfWebRequest $request) {
kenny.kev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 15h18   #6
Futur Membre du Club
 
Femme
Inscription : novembre 2011
Messages : 41
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : novembre 2011
Messages : 41
Points : 17
Points : 17
J'avais deja essayé comme cela mais le problème c'est que là j'envoie un mail à partir d'un site hébergé donc en fait le lien lors de la réception du mail, quand on fait:

Code :
1
2
 
<?php echo url_for('@homepage?activation_key='.$activation_key); ?>
est sous cette forme " /934af3 " (934af3 étant un exemple ici d'activation_key) et rien d'autre.

Comment doit-on déclarer l'adresse du site si ce n'est pas en faisant comme cela:
Code :
<?php echo url_for('http://nom_mon_site?activation_key='.$activation_key); ?>
Avec cette méthode j'avais bien un lien url auquel on pouvait accéder...


Le problème que j'ai est dans la récupération après de l'activation_key... Je pense que c'est vraiment un truc bête mais j'avoue ne pas réussir du tout à résoudre ce problème malgré de longue recherches Google...


Merci beaucoup en tout cas pour ton aide!

PS: et pour le
Code :
public function executeIndex(sfWebRequest $request) {
J'ai juste oublier de le marquer, mais il est bien présent dans mon code...
missJu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 15h28   #7
Futur Membre du Club
 
Inscription : août 2009
Messages : 24
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 24
Points : 18
Points : 18
Bonjour,

Pour le 'url_for' il faut lui spécifier que l'url à générer est absolu en second paramètre:

Code :
<?php echo url_for('@homepage?activation_key='.$activation_key, true); ?>
Ensuite côté controlleur, un simple:
Code :
$request->getGetParameter('activation_key')
devrait suffire.
ufretin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 18h33   #8
Membre chevronné
 
Avatar de kenny.kev
 
Homme
Inscription : janvier 2007
Messages : 574
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 574
Points : 688
Points : 688
Envoyer un message via MSN à kenny.kev
Si j'ai bien compris, c'est qu'elle a 2 applications distincte. D'une appli elle veux taper sur l'autre, est-ce bien ça ?

url_for n'est utile uniquement si l'url est sur la même application sinon il ne sais pas faire. Il faut que tu la construise à la mano.
kenny.kev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 17h46   #9
Futur Membre du Club
 
Femme
Inscription : novembre 2011
Messages : 41
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : novembre 2011
Messages : 41
Points : 17
Points : 17
Bon j'ai réussi à résoudre mon problème, merci beaucoup à vous deux pour votre aide.

En fait je cherchais à récupérer la variable passée dans une url envoyée par mail suite à l'enregistrement, pour valider ensuite l'inscription des utilisateurs lors de leur signin, or je n'avais pas pensé à passer cette variable dans le Post du signin ce qui explique l'absence de cette variable une fois le login et password validés...

Je récupère donc la variable avec un getGetParameter('activation_key').

Ensuite je place cette variable dans un champs caché de mon formulaire signin et avec un getPostParameter je la récupère lorsque le formulaire est posté.

Il me reste néanmoins 2 petits problèmes, avec
Code :
<?php echo url_for('@homepage?activation_key='.$activation_key, true); ?>
1) Le lien envoyé est de la forme http://mon_site/ma_clé au lieu d'être de la forme http://mon_site?activation_key=ma_clé.
Or pour récupérer ma clé avec getGetParameter('activation_key') il me faut un lien de la forme http://mon_site?activation_key=ma_clé.

2) Hotmail ne prend pas cela comme un lien hypertexte, il n'est pas cliquable (alors que gmail oui...)

Auriez vous une idée de comment faire?

Merci beaucoup en tout cas!
missJu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 09h46   #10
Membre chevronné
 
Avatar de kenny.kev
 
Homme
Inscription : janvier 2007
Messages : 574
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 574
Points : 688
Points : 688
Envoyer un message via MSN à kenny.kev
Rajouter les balises <a>.

Un mail c'est de l'HTML à la base sauf pour les serveurs mail configuré en texte brut.
kenny.kev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 11h41   #11
Futur Membre du Club
 
Inscription : août 2009
Messages : 24
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 24
Points : 18
Points : 18
Pour répondre au 1), le " http://mon_site/ma_clé " devrait te permettre de récupérer "ma_cle" via getParameter tout court ou encore GetRequestParameter.

Si tu tiens vraiment à garder le '?', il faut que tu créé ta route comme ceci par exemple:

Code :
<?php echo url_for('@homepage', true) .'?activation_key='.$activation_key; ?>
ufretin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 18h31   #12
Futur Membre du Club
 
Femme
Inscription : novembre 2011
Messages : 41
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : novembre 2011
Messages : 41
Points : 17
Points : 17
Je suis désolée je n'ai pas pu vérifier vos conseils jusqu'à aujourd'hui.

Un énorme merci ca y est tout marche parfaitement, vous m'avez vraiment bien aidé, j'aurai eu beaucoup de mal sans vous!
missJu 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 11h00.


 
 
 
 
Partenaires

Hébergement Web