2010-12-10 28 views
1

Pour notre site, nous avons mis en place l'e-mail d'activation de compte avec le tutoriel suivant (en CakePHP):CakePHP compte email d'activation - Adresse introuvable sur le serveur

http://www.jonnyreeves.co.uk/2008/06/cakephp-activating-user-account-via-email/

Sur notre site en direct, il semble que l'activation fonctionne pour la plupart, cependant certaines personnes reçoivent l'erreur suivante en cliquant sur le lien de l'email d'activation pour activer leur compte:

Erreur: L'adresse demandée '/ users/activate/36/10a1a794' n'a pas été trouvée sur ce serveur.

Cela m'est bizarre parce que le lien semble correct: contrôleur "users", action "activate", user_id = 36, et hash code = 0a1a794. Je ne sais pas pourquoi cette erreur se produit. Une chose que je lis est d'effacer les fichiers dans le dossier cache et cela ne semble pas changer quoi que ce soit. S'il vous plaît, merci!

+2

Eh bien, nous ne saurons pas non plus sans être en mesure de regarder votre application ou les fichiers journaux ... En fait, je – deceze

Répondre

1

Le hachage d'activation a une validité limitée (même jour). Par conséquent, si vous envoyez l'e-mail d'activation le 1er de chaque mois, il sera valide jusqu'à 23h59 du 1er janvier 2010. Le lien ne fonctionnera pas après midi (techniquement le 2ème du mois).

Espérons que cela aide.

+0

enlevé la chose jour et il suffit d'utiliser l'adresse e-mail en changeant à: retour substr (Sécurité: : hash (Configure :: read ('Security.salt'). $ this-> champ ('email')), 0, 8); Ceci devrait le rendre valide pour toujours mais semble toujours déclencher le même problème. Est-ce que quelqu'un sait ce que le drapeau 0 et 8 fait? –

+0

0 - 8 est la longueur de la sous-chaîne dans votre exemple qui serait (10a1a794). Aller de l'avant pour le problème en main vérifier l'action du contrôleur à l'utilisateur est envoyé lorsqu'il clique sur le lien. Vérifiez d'abord si l'action du contrôleur a deux paramètres –

+0

.... quelle que soit la fonction (id = null, signature = null), si elle vérifie ensuite si la signature générée dans cette action est similaire à celle qui a envoyé l'email. Astuce # copiez le code qui génère la signature des deux actions et utilisez un seul identifiant (dans ce cas 36) sur les deux, et vérifiez s'ils génèrent la même sortie. C'est toute l'idée. J'espère que cela pourra aider. –

0

Oui, c'est ce que Josh R a dit, le hachage est calculé pour le même jour et c'est une très mauvaise idée.

Vous devez soit arrêter de hacher la date, soit la valider par rapport à deux valeurs: une pour la date d'aujourd'hui, une pour la date d'hier.

Aussi, une recommandation: ne pas simplement y aller et copier les fichiers, essayer d'apprendre quelque chose et s'il vous plaît, faites-le à votre façon. Vous apprendrez beaucoup plus.