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 :

Problème de cookie


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut Problème de cookie
    Bonjour,
    dans mon code de teste de login, le cookie ne s'écrit qu'après l'actualisation de ma page.
    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
     
    <?php
    if(empty($_POST['login']) || empty($_POST['pass'])) {
      echo"<script language=\"Javascript\">alert(\"Vous avez oublié de remplir un champ\");document.location.href='index.php';</script>";
     }
    //Voici les deux tableaux des jours et des mois traduits en français
    $nom_jour_fr = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
    $mois_fr = Array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", 
            "Septembre", "Octobre", "Novembre", "Décembre");
    // on extrait la date du jour
    list($nom_jour, $jour, $mois, $annee) = explode('/', date("w/d/n/Y"));
    $connexion_str=$nom_jour_fr[$nom_jour].' '.$jour.' '.$mois_fr[$mois].' '.$annee . ' à ' . date("H:i:s");
    require("connexion.php");
    if(isset($_POST['login']) && isset($_POST['pass'])) {
    $test_login=("select * from membres where login='" . $_POST['login'] . "'");
    $rs=mysql_query($test_login)or die ("Exécution de la requête impossible");
    $data=mysql_fetch_assoc($rs);
    if($data['pass']!=$_POST['pass']){
     $erreure = "Mauvais Pseudo ou Mot de passe. Merci de recommencer";
    	echo"<script language=\"Javascript\">alert(\"$erreure\");history.back();</script>";
        exit;
      }
      else {
        setcookie("login", $_POST['login']);
    	$sql="update membres set connexion_str='" . $connexion_str . "',online=1 where login='" . $_COOKIE['login'] . "'";
        $rsql=mysql_query($sql) or die("Erreur requête");
      }   
    }
    ?>

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Bah rien de plus normal

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut
    Mais pourquoi le cookie ne s'écrit pas au premier temps

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Car c'est le comportement logique des cookies.

    Pour les détails techniques, je ne saurais trop t'expliquer, mais en y réfléchissant bien c'est tout à fait normal, tant que le navigateur n'a pas réactualisé la page, il n'a pas connaissance de la présence du cookie.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut
    C'est quoi l'intérêt de faire un cookie si il ne marchera que lors de l'actualisation de la page? Je veux l'utiliser au chargement de la page comme en asp.

  6. #6
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    Salut.

    Citation Envoyé par debutantasp Voir le message
    C'est quoi l'intérêt de faire un cookie si il ne marchera que lors de l'actualisation de la page? Je veux l'utiliser au chargement de la page comme en asp.
    créer plutôt une session.
    les cookies ne sont pas une valeur sur pour une authentification, vous pouvez les utilisé pour mémorisé le login sur le post qui a exécuté le POST.

  7. #7
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par debutantasp Voir le message
    Bonjour,
    dans mon code de teste de login, le cookie ne s'écrit qu'après l'actualisation de ma page.
    Bonjour,

    J'interviens pour préciser quelques points

    Les sessions et les cookies sont aussi sur l'un que l'autre heureusement.
    Simplement les cookies sont parfois refusés par tes visiteurs, alors que la session c'est ton serveur qui la gére a son insus ...

    Mais le mécanisme est le même pour les deux, quand on les changent c'est fait de suite bien sur !!
    MAIS tu as bien assimilé, que le PHP agit pour générer les pages html
    et disparait, alors regardes comment ça marche:

    Imagines un PHP avec dans l'ordre

    1) je lis mes sessions
    2) je lis mes cookies
    3) je captes mes POST et mes GET ....
    4) je traites en foncion des POST GET et modifies mes cookies ou sessions
    puis j'envoies ma page html au visiteur
    5) MOI PHP je me retire jusqu'au prochain appel de page ...

    Tu vois que dans ce shemat, comme je n'ais pas relu mes sessions ou cookies alors que je viens de les modifier, je perd un tour !!

    C 'est pourquoi la régle d' or est non pas d'utiliser directement les sessions et cookies, mais les variables associées !!

    comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    //==== illustration de l etape 1
    if (!isset($_SESSION['age_capitaine']))   {$_SESSION['age_capitaine']=20;$age_capitaine=20;}
         else {$age_capitaine=$_SESSION['age_capitaine'];}
    // ==== et apres  etape 3 4
     
    $_SESSION['age_capitaine']=40;$age_capitaine=40;
    Alors ça c'est la bonne méthode car
    OUI j'ais mis a jour ma session
    NON je ne l'ais pas relue
    OUI ma variable associée est déjas a jour

  8. #8
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Sauf qu'une variable de session, on peut la modifier et avoir sa valeur modifiée directement, contrairement aux cookies.

    Citation Envoyé par FoxLeRenard Voir le message
    Les sessions et les cookies sont aussi sur l'un que l'autre heureusement.

    Les cookies aussi sûrs que les sessions ?

  9. #9
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par Xunil Voir le message
    Sauf qu'une variable de session, on peut la modifier et avoir sa valeur modifiée directement, contrairement aux cookies.


    Les cookies aussi sûrs que les sessions ?
    Même exemple,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (!isset($_COOKIE["toto"])) $UserValide="visiteur"; 
            else $UserValide=$_COOKIE["toto"];
     
    //========= et donc si on change
    $UserValide="FoxLeRenard";
    setCookie('toto',$UserValide,(time()+60*60*24*365));
    Tu vois le cookies est réécris, pas relu, mais sa variable associée est a jour

    (merci de n'intervenir que si tu sais)

  10. #10
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Non, rien

  11. #11
    Membre habitué Avatar de greg13
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 144
    Points : 156
    Points
    156
    Par défaut
    Bonjour

    J'ai une question pour les membres expérimentés :
    Lorsque l'on crée une session, n'y a-t-il pas d'office un cookie créé chez le client, même si toutes les variables sont enregistrées sur le serveur?
    Sinon comment le serveur peut-il se souvenir de "à qui appartiennent quelles variables"?

  12. #12
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 19
    Points : 23
    Points
    23
    Par défaut
    @greg13 : avec les sessions il y a un cookie sur l'ordi du visiteur. C'est son identifiant le PHPSESSID.
    Ensuite avec l'identifiant de ce cookie il lit le reste des infos sur le serveur et non plus sur un cookie chez l'utilisateur

  13. #13
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par greg13 Voir le message
    Bonjour

    J'ai une question pour les membres expérimentés :
    Lorsque l'on crée une session, n'y a-t-il pas d'office un cookie créé chez le client, même si toutes les variables sont enregistrées sur le serveur?
    Sinon comment le serveur peut-il se souvenir de "à qui appartiennent quelles variables"?
    Non les Cookies et les sessions sont séparées
    Du reste le cookies est sur le micro du visiteur, et le serveur ne peut en voir la valeur que si le visiteur reviens sur le serveur !

    La session est sur le serveur et y reste environ 20 minutes (paramétrage moyen)
    cela veut dire que si tes données sont gérées par cookies ET par session,

    Tu vas sur une page et tu y fais des choix, ....
    mettons que le serveur te mette tes choix moitié sur ta session moitiée sur un cookies

    TU PART manger une heure mais restes sur la page ...
    au retour ta session et ces données sont perdus, pas le cookies bien sur !

  14. #14
    Membre habitué Avatar de greg13
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 144
    Points : 156
    Points
    156
    Par défaut
    Ben voilà, donc au final, si on vole le cookie de session ou simplement l'identifiant de session, on peut utiliser la session volée. A moin que le script php ne contrôle l'ip de utilisateur. Alors ça limite largement le danger.

    Si j'ai bien compris...

  15. #15
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 19
    Points : 23
    Points
    23
    Par défaut
    C'est pas aussi facile que ça. De plus, on sécurise souvent via la bdd. Perso, j'enregistre l'identifiant dans la bdd puis je gère à partir de là. (j'aime pas les cookies )

    Et puis ça se sécurise bien mieux les sessions :
    http://cyberzoide.developpez.com/securite/session/

  16. #16
    Membre habitué Avatar de greg13
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 144
    Points : 156
    Points
    156
    Par défaut
    Tu envois l'id de session à chaque requête alors (dans l'url)?

  17. #17
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 19
    Points : 23
    Points
    23
    Par défaut
    Non jamais dans l'url C'est très mauvais pour le référencement (au passage).

    Tu as d'autres moyens. Pas mal de tuto en parle

  18. #18
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par SorenS Voir le message
    @greg13 : avec les sessions il y a un cookie sur l'ordi du visiteur. C'est son identifiant le PHPSESSID.
    Ensuite avec l'identifiant de ce cookie il lit le reste des infos sur le serveur et non plus sur un cookie chez l'utilisateur
    Exactement, et il faut préciser qu'il existe un paramétre de PHP.INI
    qui permet de se passer totalement de ce cookie .

    Mais alors on se trimbale dans l'url le PHPSESSID d'une page a l'autre
    alors c' est pas beau et c'est encore plus fragile coté sécurité !!

  19. #19
    Membre habitué Avatar de greg13
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 144
    Points : 156
    Points
    156
    Par défaut
    Biensûr mais au final il faut bien transferer cet identifiant à chaque requête, soit dans les données POST soit dans les GET (url) soit par cookie. Je ne vois pas d'autre possibilité à priori. Mais c'est sûr que pour le référencement c'est pas top dans l'url.

    Et donc en analysant les requetes entre un client et un serveur, on peut sans problème récuperer cet identifiant, à moin de chiffrer les données biensûr.

  20. #20
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par greg13 Voir le message
    Biensûr mais au final il faut bien transferer cet identifiant à chaque requête, soit dans les données POST soit dans les GET (url) soit par cookie. Je ne vois pas d'autre possibilité à priori. Mais c'est sûr que pour le référencement c'est pas top dans l'url.

    Et donc en analysant les requetes entre un client et un serveur, on peut sans problème récuperer cet identifiant, à moin de chiffrer les données biensûr.
    Je ne sais a qui tu répondais mais en fait il n'y a rien a faire dans 99% des cas la fonction
    Gére tout tout seul
    Pas de POST GET ou autre ...

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/12/2006, 22h21
  2. Problème sur cookie
    Par devjcc dans le forum Web
    Réponses: 7
    Dernier message: 17/06/2006, 12h11
  3. [Cookies] Problème avec cookie
    Par chienlou dans le forum Langage
    Réponses: 4
    Dernier message: 16/05/2006, 15h55
  4. [Cookies] problème de cookies
    Par jeanfrancois dans le forum Langage
    Réponses: 1
    Dernier message: 10/04/2006, 16h13

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