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 :

cookies non utilisable


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 632
    Points : 405
    Points
    405
    Par défaut cookies non utilisable
    Bonjours à tous. je créai des cookies qui existe (vérification via firefox)) mais je ne sais pas comment les afficher et les utiliser pour remember me.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $timestamp_expire = time() + 365*24*3600;
                        setcookie('email',$email, $timestamp_expire,'/','localhost',false,true);
                        setcookie('mdp',$password,  $timestamp_expire,'/','localhost',false,true);
                        echo "      ----------------traitement php-----------------      ";
                        echo "      ----------------set--cookies-------------------      ";
                        echo $_COOKIE['email'];
                        echo "      ----------------set--cookies-------------------      ";
                        echo $_COOKIE['mdp'];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    if (isset($_COOKIE['mdp']) && isset($_COOKIE['email'])  ) {
     
        $mysqli = new mysqli('127.0.0.1', 'root', '', 'ducerf');
     
     
     
        //On créé la requête
        //    $req="SELECT login, password FROM jeux_video WHERE login =.'.$var.'. AND password =.'.$password.'";
     
        $sql = "SELECT email, password FROM membre WHERE email = '".$email."'";
     
     
    if (!$result = $mysqli->query($sql)) {
     
           header('Location: index.php?error=1');
       }
     
       if ($result->num_rows === 0) {
     
           header('Location: index.php?error=1');
       }
     
      if ($data = mysqli_fetch_array($result))
      {
          if (password_verify($_COOKIE['mdp'], $data['password']))
     
                {
     
                        echo "      ----------------traitement php-----------------      ";
                        echo "      ----------------set--cookies-------------------      ";
                        echo $_COOKIE["email"];
                        echo "      ----------------set--cookies-------------------      ";
                        echo $_COOKIE["mdp"];
     
     
                    }

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

    Oui....
    Et à quel endroit du code ça coince ?


    cela dit, enregistrer un mot de passe EN CLAIR dans un cookie...

  3. #3
    Membre averti Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 632
    Points : 405
    Points
    405
    Par défaut
    Merci pour ton aide.
    ca bloque là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (isset($_COOKIE['mdp']) && isset($_COOKIE['email'])  ) {
    le programme ne reconnait pas la présence des cookies. De plus il ne reconnait pas mdp et email isset(($_COOKIE('mdp')) et isset($_COOKIE['email'}).
    Merci.
    Tu as raison pour le password mais jutilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    password_verify($_COOKIE['mdp'], $data['password']))
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    setcookie('email',$email, $timestamp_expire,'/','localhost',false,true);
                        setcookie('mdp',$password,  $timestamp_expire,'/','localhost',false,true);
    Je code comme je l'ai vue dans un tutoriel vidéo.Il assure que le mdp est proteger.

    $sql = "SELECT email, password FROM membre WHERE email = '".$email."'";

  4. #4
    Invité
    Invité(e)
    Par défaut
    1- Essaie en remplaçant isset() par !empty().

    2-
    Citation Envoyé par Philcmoi Voir le message
    ...Il assure que le mdp est proteger.
    • Oui, dans la base de données (car hashé),
    • Mais NON, PAS sur l'ordinateur du client (ou PIRE, du cyber-café !)

    Généralement, on utilise un "token".
    • Ça peut être une chaine alphanumérique, SANS AUCUN rapport avec le mot de passe ni l'id du client.
    • Et on l'enregistre en même temps dans la base de données, dans une colonne "cnx_cookie_remember", par exemple (en clair ou hashé, peu importe).

    Il suffit alors de comparer le cookie avec le "cnx_cookie_remember" enregistré en BDD.

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Stocker le mot de passe en clair dans le cookie, c'est à peu près du même niveau que l'écrire sur un post-it collé sous le clavier. La connexion est sécurisée, mais n'importe quel individu qui a accès à ton ordi peut se connecter.
    La différence avec le post-it, c'est que l'utilisateur n'est pas au courant de l'existence du cookie (parce qu'il a cliqué sur "j'accepte et arrêtez de me poser la question" sur la petite banderole que tu dois légalement mettre pour indiquer que tu utilises des cookies, mais que personne ne lit jamais)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre averti Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 632
    Points : 405
    Points
    405
    Par défaut
    Merci pour vos réponse.
    J'ai suivi vos conseils et utiliser un token à la place du mot de passe.
    Ca marche mais ca bug lorsque je me reconnecte au site quelque minute plus tard. ????
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    if (isset($_COOKIE["token"]) AND isset($_COOKIE["email"]) AND !empty($_COOKIE["token"]) AND !empty($_COOKIE["email"])) {
     
         $mysqli = new mysqli('127.0.0.1', 'root', '', 'ducerf');
     
         $token = htmlspecialchars($_COOKIE["token"]);
     
         $email = htmlspecialchars($_COOKIE["email"]);
     
        $sql = "SELECT email, token FROM membre WHERE email = '".$email."' AND token = '".$token."'";
     
     if (!$result = $mysqli->query($sql)) {
     
            header('Location: index.php?error=1');
        }
     
        if ($result->num_rows === 0) {
     
            header('Location: index.php?error=1');
        }
     
       if ($data = mysqli_fetch_array($result))
       { header('Location: bienvenue.php');}
                 else {header('Location: index.php?error=1') ;}
     
     mysqli_close($mysqli); 
     
          $result->close();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    if (isset($_GET['error'])) {$error=htmlspecialchars($_GET['error']);
     
    switch ($error) {
        case 1:
     
            echo " Donnees incorrectes ";
            break;
     
        case 2:
     
            echo " Donnees incorrectes";
            break;
     
        case 3:
            echo "vous avez ete deconnecte";
            break;
                  }
     
      ;}
    je ne sais pas ce qui coince.

    "La page n’est pas redirigée correctement

    Firefox a détecté que le serveur redirige la demande pour cette adresse d’une manière qui n’aboutira pas.

    La cause de ce problème peut être la désactivation ou le refus des cookies."

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- Remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_COOKIE["token"]) AND isset($_COOKIE["email"]) AND !empty($_COOKIE["token"]) AND !empty($_COOKIE["email"])) {
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!empty($_COOKIE["token"]) && !empty($_COOKIE["email"])) {
    • isset() est déjà inclus dans !empty()
    • AND (OR) a un fonctionnement particulier. Il est préférable d'utiliser && (||)

    2- Pour les TESTS, mets des echo au lieu des header('Location...), pour savoir par où passe le script.

    3- Important : après un header('Location...), il faut toujours mettre un exit; pour terminer le script courant.

  8. #8
    Membre averti Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 632
    Points : 405
    Points
    405
    Par défaut
    Merci, j'ai fait ce que vous m'avais conseiller. après deux heure ça ne fonctionne plus.

  9. #9
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Donc ton cookie expire au bout de 2 heures ? Tu peux vérifier la validité de tes cookies en utilisant les outils de développement de ton navigateur (Dans firefox par exemple : F12, onglet stockage)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  10. #10
    Membre averti Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 632
    Points : 405
    Points
    405
    Par défaut
    Merci tout les cookies ont une durrée de vie de 1 ans sauf PHPSESSION qui est immédiat.
    vus sur firefox examiner les éléments.
    Je crois avoir deviner le problème j'ai éteint l'ordinateur servant aussi de serveur.

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

Discussions similaires

  1. Non-utilisation d'un caractère générique
    Par ehrhart.jy dans le forum Access
    Réponses: 2
    Dernier message: 13/07/2006, 11h02
  2. [TUNING] pb non utilisation de l'index
    Par ruthene dans le forum Oracle
    Réponses: 10
    Dernier message: 13/04/2006, 17h02
  3. Javascript : non utilisation du CSS
    Par lafracas dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 12/04/2006, 09h49
  4. [SERVICE INTERACTIF] Form non utilisable apres logoff/logon
    Par Spart64 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 05/03/2006, 13h32
  5. Réponses: 1
    Dernier message: 28/04/2004, 19h36

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