Génération d'un jeton aléatoire de confirmation d'email avec PHP et Symfony

Publié le 01/07/2023 • Actualisé le 01/07/2023


English language detected! 🇬🇧

  We noticed that your browser is using English. Do you want to read this post in this language?

Read the english version 🇬🇧 Close

Dans ce bout de code, nous voyons comment générer un jeton aléatoire de confirmation d'email avec PHP et Symfony. La longueur finale de la chaîne est la même (50). Le résultat est légèrement différent avec Symfony, car le jeton semble être "plus aléatoire" avec les lettres en majuscules et une meilleure répartition des chiffres et des lettres (consonne).


<?php

declare(strict_types=1);

namespace App\Controller\Snippet;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\String\ByteString;

/**
 * J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
 * Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
 * ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
 * Les services sont injectés dans le constructeur du contrôleur principal.
 */
trait Snippet263Trait
{
    public function snippet263(Request $request): void
    {
        // PHP
        $confirmationCode1 = bin2hex(random_bytes(25));
        $confirmationCode2 = bin2hex((new \Random\Randomizer())->getBytes(25));

        // Symfony
        $confirmationCode3 = ByteString::fromRandom(50);

        echo 'PHP: '.$confirmationCode1.' '.\strlen($confirmationCode1).PHP_EOL;
        echo 'PHP 8.2: '.$confirmationCode2.' '.\strlen($confirmationCode2).PHP_EOL;
        echo 'Symfony: '.$confirmationCode3.' '.$confirmationCode3->length();

        // That's it! 😁
    }
}

 Exécuter le snippet  Plus sur Stackoverflow   Lire la doc  Snippet aléatoire

  Travaillez avec moi !