Traduction d'une fonction en PHP

devdeb22 Messages postés 31 Statut Membre -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Quelqu'un peut-il me traduire en bon français ce que dit cette fonction.

function reconnect_from_cookie(){
    if(session_status() == PHP_SESSION_NONE){
        session_start();
    }
    if(isset($_COOKIE['remember']) && !isset($_SESSION['auth']) ){
        require_once 'db.php';
        if(!isset($pdo)){
            global $pdo;
        }
        $remember_token = $_COOKIE['remember'];
        $parts = explode('==', $remember_token);
        $user_id = $parts[0];
        $req = $pdo->prepare('SELECT * FROM users WHERE id = ?');
        $req->execute([$user_id]);
        $user = $req->fetch();
        if($user){
            $expected = $user_id . '==' . $user->remember_token . sha1($user_id . 'ratonlaveurs');
            if($expected == $remember_token){
                session_start();
                $_SESSION['auth'] = $user;
                setcookie('remember', $remember_token, time() + 60 * 60 * 24 * 7);
            } else{
                setcookie('remember', null, -1);
            }
        }else{
            setcookie('remember', null, -1);
        }
    }
}


J'ai l'impression que si je comprends ce que dis cette fonction, je vais trouver la réponse à mon problème.

Merci

EDIT : Ajout du LANGAGE dans les balises de code (pour avoir la coloration syntaxique)

1 réponse

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    On va plutôt procéder autrement....
    Quelles lignes ne comprends tu pas dans ce code ?

    Après.. le code n'est pas super propre....
    mais bon... voici le début de la "traduction"

    if(session_status() == PHP_SESSION_NONE){
            session_start();
        }
    

    Si pas de session démarrée... on les démarre.

    require_once 'db.php';
            if(!isset($pdo)){
                global $pdo;
            }
    

    On inclus le fichier contenant les infos de connexion à la bdd et qui instancie la connexion à la bdd.
    Puis on récupère la variable $pdo pour s'en servir ensuite dans le reste du code

    $remember_token = $_COOKIE['remember'];
            $parts = explode('==', $remember_token);
            $user_id = $parts[0];
    

    On récupère le contenu de la variable remember contenu dans les COOKIES
    On l'explose (le séparateur étant == )
    On prend la première des valeurs qu'on stocke dans la variable $user_id

    $req = $pdo->prepare('SELECT * FROM users WHERE id = ?');
            $req->execute([$user_id]);
    

    On fait une requête SQL pour récupérer l'utilisateur dont l'id correspond à la variable

    Pour la suite... il compare si la valeur retournée par la requête (concaténée avec quelques autres infos ) correspond à celle stockée dans $remember_token

    Si oui, il renseigne la variable $_SESSION['auth']
    Si non .. il supprime le cookie.

    0