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

Langage PHP Discussion :

lien d'activation dans un mail format html ne fonctionne pas


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Points : 144
    Points
    144
    Par défaut lien d'activation dans un mail format html ne fonctionne pas
    bonjour,
    j'ai modifié un script de mail de confirmation pour introduire un envoi de mail en html
    mais je crois que mon lien a un probleme de syntaxe que je ne comprends pas.

    j'écrie mon lien comme ca

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $variable = "<p><a href=\"http://monsite.com/activation.php?log=".urlencode($email)."&cle=".urlencode($cle)."\">http://monsite.com/activation.php?log=".urlencode($email)."&cle=".urlencode($cle)."</a></p>";

    mais le lien affiche des % et des lettres bizarres au niveau du log et de la clef

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    http://monsite.com/activation.php?log=contact%40assurance-vie101.ca&cle%EF%BF%BDcfa36d4c2babeecab65dc6d2e6c34b

    quelqu'un peut voir ou se trouve l'erreur?

    merci
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait!
    Mark Twain.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    voir :

    Ne confond pas l'URL du lien et celle affichée :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $variable = "<p><a href=\"http://monsite.com/activation.php?log=".urlencode($email)."&cle=".urlencode($cle)."\">http://monsite.com/activation.php?log=".$email."&cle=".$cle."</a></p>";
    ou simplement :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $variable = "<p><a href=\"http://monsite.com/activation.php?log=".urlencode($email)."&cle=".urlencode($cle)."\">Cliquez ici pour activer votre compte</a></p>";
    Il faudra utiliser urldecode() à la réception ($_GET) pour récupérer les bonnes valeurs.
    [EDIT] Oups, pas vu ici :
    Avertissement
    Les superglobales $_GET et $_REQUEST sont déjà décodées. Utiliser urldecode() sur un élément de $_GET ou $_REQUEST peut avoir des conséquences inattendues et dangereuses.
    Dernière modification par Invité ; 24/11/2014 à 04h18.

  3. #3
    Membre habitué Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Points : 144
    Points
    144
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p><a href=\"http://monsite.com/activation.php?log=".urlencode($email)."&cle=".urlencode($cle)."\">http://monsite.com/activation.php?log=".$email."&cle=".$cle."</a></p>
    jreaux62- Il faudra utiliser urldecode() à la réception ($_GET) pour récupérer les bonnes valeurs.
    bon c'est nouveau ca!
    quand j'envoyais mon mail en format texte, j'avais pas besoin de faire ca et ca fonctionnait quand meme|

    sur la page activation mes variables $login et $cle sont vides présentement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ((isset($_GET['log'])) && (isset($_GET['cle'])))  {
    $login = htmlentities($_GET['log']);
    $cle = htmlentities($_GET['cle']);
    var_dump($login)."<br/>";
    var_dump($cle);
    alors si je comprends bien, je devrais faire ca ? ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ((isset($_GET['log'])) && (isset($_GET['cle'])))  {
    $login = urldecode($_GET['log']);
    $cle = urldecode($_GET['cle']);
    var_dump($login)."<br/>";
    var_dump($cle);
    c'est que je viens d elire la doc sur url decode et voici ce qu'ils disent:

    AVERTISSEMENT! Les superglobales $_GET et $_REQUEST sont déjà décodées. Utiliser urldecode() sur un élément de $_GET ou $_REQUEST peut avoir des conséquences inattendues et dangereuses.
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait!
    Mark Twain.

  4. #4
    Invité
    Invité(e)
    Par défaut
    A priori, si tu as vérifier avant que $email est bien un email valide,
    et que tu sais comment est généré $cle (pas de caractères spéciaux susceptibles de poser problème),
    tu n'as pas forcément besoin d'utiliser urlencode()

  5. #5
    Membre habitué Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Points : 144
    Points
    144
    Par défaut
    j'ai finalement résolu le problème!

    il était ailleurs

    j'ai changé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $Texte_html=''<html><head></head><body> bla balaba
     
    <p><a href=\"http://monsite.com/activation.php?log=".urlencode($email)."&cle=".urlencode($cle)."\">http://monsite.com/activation.php?log=".$email."&cle=".$cle."</a></p>
     
    </body></html>";
    pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $Texte_html='<html><head></head><body> bla balaba
     
    <p><a href=\'http://monsite.com/activation.php?log='.urlencode($email).'&cle='.urlencode($cle).'\'>http://monsite.com/activation.php?log='.$email.'&cle='.$cle.'</a></p>
     
    </body></html>';
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait!
    Mark Twain.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Comme quoi il faut montrer le bout de code COMPLET...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $Texte_html='<html><head></head><body> bla balaba
    <p><a href="http://monsite.com/activation.php?log='.urlencode($email).'&cle='.urlencode($cle).'">http://monsite.com/activation.php?log='.$email.'&cle='.$cle.'</a></p>
    </body></html>';
    Il suffit d'éviter les conflit entre ' et ".

    Si tu utilises $Texte_html='...........';, inutile d'échapper les ".
    Si tu utilises $Texte_html="...........";, il faut échapper les " en \".

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

Discussions similaires

  1. lien d'activation dans un mail format html
    Par monlou dans le forum Langage
    Réponses: 2
    Dernier message: 21/11/2014, 14h50
  2. image dans un mail format html
    Par Mycose dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 09/11/2010, 13h44
  3. [Lotus Notes] - Reception de mails formaté html
    Par Alberto dans le forum Lotus Notes
    Réponses: 2
    Dernier message: 22/11/2006, 07h18
  4. [Mail()] Format HTML
    Par diaboloche dans le forum Langage
    Réponses: 7
    Dernier message: 09/07/2006, 23h49
  5. [Regexp] Recherche dans un texte formaté html
    Par YavaDeus dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 09/02/2006, 17h46

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