Bonjour à tous,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

J'ai un formulaire d'inscription avec validation de compte suite à l'envoi d'un mail.
Dans ce mail, fait en php, je veux mettre un lien cliquable qui utilise des variables qui permettent d'identifier l'utilisateur et son token.

Le lien est bien généré et il fonctionne si je le met en dur dans le texte du mail, mais l'utilisateur doit le copier et le coller dans son navigateur. Ce n'est pas très userfriendly.
Donc, j'aimerai mettre ce lien dans un href de façon à ce qu'il soit cliquable, mais quand je fais ça, il perds le contenu des variables.

<?php
ob_start();
 function formulaireRempli() {
    if(getErrors()) return header('Location:index.php?inscrire=inscrire');//si y'a une erreur je réaffiche le formulaire d'inscription
    $data = prepareData();
    $bdd = connect(); 

    $request = $bdd->prepare(//je prépare la 1er requête d'insertion dans la table utilisateur
    'INSERT INTO utilisateurs (id_type_utilisateur,email_utilisateur,mdp_utilisateur,confirmation_token_utilisateur)
    VALUES(2,:email,:mdp,:confirmation_token);

    $token = str_random(60); // génération token pour validation compte

    $request->execute([ //j'éxecute la requête
    ':email' => $data['emailinput'],
    ':mdp' => password_hash($data['passwordinput'], PASSWORD_DEFAULT),
    ':confirmation_token' => $token ]);

    $user_id = $bdd->lastInsertId();

            $send_to_inscription = $_POST['emailinput'];

            $objet_mail_inscription = 'Confirmation de votre compte';   

            $message_mail_inscription = '<html>';
            $message_mail_inscription .= '<body>';
            // Prénom et Nom
            $message_mail_inscription .= '<p> Bonjour <span style="font-weight: bold;">'.$_POST['prenominput']." ".$_POST['nominput'].'</span>,</p>';
            // Email
            $message_mail_inscription .= '<p> Félicitations, vous venez de créer un compte sur le site <span style="font-weight: bold;">xxxxxxxx.com</span> afin de faire partie des personnes inscrites en tant que bénévole ! </p>';

            $message_mail_inscription .= "<p> Il ne reste plus qu'à valider votre mail en cliquant sur le lien ci-dessous pour finaliser votre inscription et activervotre compte : </p>";

            // mail en dur 
            $message_mail_inscription .= '<span style="text-decoration:uderline;text-align:center; font-weight:bold;">'."http://xxxxxxxxxxx.com/index.php?activationCompte=ok&id=$user_id&token=$token".'</span>'.'</br>';

            //mail cliquable
            $message_mail_inscription .= '<span style="text-align:center; font-weight: bold;"> <a href="http://xxxxxxxxxxxxx.com/index.php?activationCompte=ok&id=$user_id&token=$token"> Activation du compte </a> </span>';

            $message_mail_inscription .= '<p> Ensuite, vous pourrez vous connecter à votre compte, ce qui vous permettra de modifier vos informations personnelles et de gérer votre inscription.</p>';

            $headers_inscription = "From: Responsable Bénévoles  <no-reply@xxxxxxx.com>"."\r\n";
            $headers_inscription .= "Reply-to : xxxxxxxx@xxxxxxxxxx.com"."\r\n";
            $headers_inscription .= 'MIME-Version: 1.0'."\r\n";
            $headers_inscription .= 'Content-type: text/html; charset=UTF-8'."\r\n";

            mail($send_to_inscription, $objet_mail_inscription, $message_mail_inscription, $headers_inscription);

        return header('Location:index.php?confirmationCompte=confirmation_compte_benevole');exit();

}//fin fonction formulaireRempli

Ce que j'obtiens

J'obtiens donc un lien que je dois copier coller qui fonctionne.
Et un lien cliquable qui n'a pas de variable et ne fonctionne donc pas.

Avez vous une idée pour que le lien cliquable arrive à utiliser les variables svp !
Je vous remercie d'avance pour votre aide ;)

3 réponses


EllyWill
Auteur
Réponse acceptée

Bonsoir Carouge10,
C'est ce que j'ai supposé en effet.
Je m'entêtais à respecter la syntaxe de l'href. Je n'avais pas pensé que je pouvais échapper les " du lien.
Donc, avec la ligne suivante, mon problème est résolu !

$message_mail_inscription .= '<span style="text-align:center; font-weight: bold;">'."<a href=\"http://xxxxxxxxxxx.com/index.php?activationCompte=ok&id=$user_id&token=$token\">Activation du compte </a> </span>";

Merci pour tes lumières qui m'ont mise sur la bonne voie Carouge10 !

Bonjour,
Les variables php qui sont entouré de ' ne sont pas interprété
d'où la différence en le lien en dur et le lien cliquable

utiliser la même syntaxe.
la concaténation est la