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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    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 chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Par défaut
    Bah rien de plus normal

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

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

  4. #4
    Membre chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    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 éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    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 : 50
    Localisation : Algérie

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    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 chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    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 chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Par défaut
    Non, rien

  11. #11
    Membre confirmé 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
    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"?

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