• [^] # Re: SID

    Posté par (site web personnel) . En réponse au message Accès réservé à des fichiers vendus. Évalué à 3.

    En fait, j'ai bien résolu le problème grâce à une identification en deux étapes (identification + vérification au début du téléchargement), et c'est vraiment bien plus léger que de s'occuper d'un cookie, qui présente certes bien plus de fonctionnalités, mais assez inutiles dans mon cas.

    J'aimerais bien savoir en quoi c'est plus léger qu'un :

    if (isset($_SESSION['login']) && $_SESSION['login'] === true) { }


    De plus tu peux très bien utiliser les sessions sans cookies en passant le SID dans l'URL et en forçant l'utilisation du SID en paramètre (en fixant session.use_cookies à 0, session.use_only_cookies à 0 et session.use_trans_sid à 1 via la fonction ini_set())
    Ce code fonctionne parfaitement sans acceptation des cookies par le client (et en plus il ajoute automatiquement le SID dans l'URL


    ini_set('session.use_cookies', 0);
    ini_set('session.use_only_cookies', 0);
    ini_set('session.use_trans_sid', 1);
    session_start();

    if (isset($_SESSION['id']) === false) {
    echo 'pas de session';
    $_SESSION['id'] = 42;
    } else {
    echo $_SESSION['id'];
    $_SESSION['id'] = 1;
    }
    <a href='./test.php>lien


    Enfin pour finir avec les sessions, si tu initialise bien ta session lors d'une connexion, tu n'auras aucun problème de cache et tes utilisateurs pourront se connecter avec plusieurs login sans que cela ne pose de problème.

    Au moins avec cette solution, pour peu que tu sécurises un peu la session, tu n'auras plus de problème avec l'identification.

    Ensuite, pour les fichiers que l'utilisateur peut télécharger, il suffit de les garder en session pour vérification avant d'envoyer le fichier demandé avec ta page php


    ini_set('session.use_cookies', 0);
    ini_set('session.use_only_cookies', 0);
    ini_set('session.use_trans_sid', 1);
    session_start();

    // Dans la page de login
    // Si le login est réussi
    // on stocke les fichiers autorise
    // dans la session
    if ($login === true) {
    $files = file_get_contents('./fichier_pour_l_utilisateur_hors_repertoire_web_avec_fichier_autorise');
    $_SESSION['files'] = explode(';', $files);
    $_SESSION['login'] = true;
    } else {
    unset($_SESSION['files']);
    unset($_SESSION['login']);
    }

    // Dans la page de telechargement
    // On vérifie que l'utilisateur est connecté
    if (isset($_SESSION['login']) === false || $_SESSION['login'] !== true) {
    // l'utilisateur n'est pas connecté
    // on le renvoie sur la page de login
    header('Location: login.php');
    exit();
    } else {
    // l'utilisateur est connecté
    // on vérifie que le fichier demandé
    // fait parti des fichiers autorisés
    if (in_array($_GET['music'], $_SESSION['files']) === true) {
    // le fichier est bin, on l'envoie
    // code d'envoie du fichier avec les headers
    } else {
    // le fichier ne fait pas parti de la liste
    // on l'indique à l'utilisateur
    echo 'fichier interdit....';
    }
    }