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 :

Récuperer un cookie avant tout


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de zool.bzh
    Homme Profil pro
    peintre industriel
    Inscrit en
    Octobre 2023
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : peintre industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2023
    Messages : 59
    Points : 45
    Points
    45
    Par défaut Récuperer un cookie avant tout
    Bonjour
    je n'arrive pas a rappeler un cookie de prime abord, voici mon code:
    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
    <?php
    $rem = $_COOKIE['cook']; //récuperation du cookie
    if (!isset ($rem)){
    	$nro = 0;
    	global $pdo;
        $pdo = new PDO('mysql:host=ip;dbname=bdd', 'id', 'mdp');
       $date = time();   
       $ip   = $_SERVER['REMOTE_ADDR'];
       $qua = $pdo->prepare("SELECT ip, date_visite FROM stats_visites");
       $qua -> execute();
      $num = $qua -> rowCount();
      foreach ($qua as $resu){
    	if($resu['date_visite']< time()+86400){
    	$wok = $resu['ip'];
    	$del = $pdo->prepare("DELETE FROM stats_visites WHERE ip='$wok'");
        $del -> execute();
        }
    	} 
    	} else {
    	       $nro = 1;
    		   $ins = $pdo -> prepare("INSERT INTO stats_visites(ip, date_visite) VALUES('$ip', time())");
               $ins = $pdo -> execute();
            setcookie('cook', '9eme', time()+86400); //création du cookie
            }
             echo $nro;
    avec le petit echo pour voir ou je me trouve il est a zero.
    Quelqu'un peut-il m'aider ?

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 113
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 113
    Points : 8 251
    Points
    8 251
    Billets dans le blog
    17
    Par défaut
    Ton code est illisible En le reformatant un minimum :

    Code PHP : 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
    <?php
     
    $rem = $_COOKIE['cook']; //récuperation du cookie
     
    if (!isset($rem)) {
     
        $nro = 0;
        global $pdo;
     
        $pdo = new PDO('mysql:host=ip;dbname=bdd', 'id', 'mdp');
        $date = time();   
        $ip = $_SERVER['REMOTE_ADDR'];
        $qua = $pdo->prepare("SELECT ip, date_visite FROM stats_visites");
        $qua->execute();
        $num = $qua->rowCount();
     
        foreach ($qua as $resu) {
            if ($resu['date_visite'] < time() + 86400) {
                $wok = $resu['ip'];
                $del = $pdo->prepare("DELETE FROM stats_visites WHERE ip='$wok'");
                $del->execute();
            }
        }
     
    } else {
     
        $nro = 1;
        $ins = $pdo->prepare("INSERT INTO stats_visites(ip, date_visite) VALUES('$ip', time())");
        $ins = $pdo->execute();
     
        setcookie('cook', '9eme', time() + 86400); //création du cookie
     
    }
     
    echo $nro;

    On se rend compte que dans le else tu utilises $pdo, or cette variable est définie dans le if.

    Autres :

    $rem = $_COOKIE['cook']; va générer un warning si le cookie n'est pas défini.

    Le INSERT appel TIME(), or cette fonction ne s'utilise pas de cette manière en SQL (=> https://dev.mysql.com/doc/refman/8.0...#function_time)
    Regarde plutôt CURRENT_TIMESTAMP() ou NOW()

    Ton code doit sûrement planter ou générer des warnings. Affiche toutes les erreurs pour savoir ce qui se passe => error_reporting() https://www.php.net/manual/fr/functi...-reporting.php
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre du Club Avatar de zool.bzh
    Homme Profil pro
    peintre industriel
    Inscrit en
    Octobre 2023
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : peintre industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2023
    Messages : 59
    Points : 45
    Points
    45
    Par défaut
    ok merci Sèb, donc voila :
    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
    <?php
    $rem = $_COOKIE['cook'];
     
    if (!isset ($rem)){
     
    	$nro = 0;
    	global $pdo;
     
           $pdo = new PDO('mysql:host=ip;dbname=bdd', 'id', 'mdp');
           $date = time();   
           $ip   = $_SERVER['REMOTE_ADDR'];
     
           $qua = $pdo->prepare("SELECT ip, date_visite FROM stats_visites");
           $qua -> execute();
           $num = $qua -> rowCount();
     
    foreach ($qua as $resu){
     
    	if($resu['date_visite']< time()+86400){
    	$wok = $resu['ip'];
    	$del = $pdo->prepare("DELETE FROM stats_visites WHERE ip='$wok'");
            $del -> execute();
            }
          } 
        } else {
     
           $nro = 1;
           $ins = $pdo -> prepare("INSERT INTO stats_visites(ip, date_visite) VALUES('$ip', CURRENT_TIMESTAMP())");
           $ins = $pdo -> execute();
           setcookie('cook', '9eme', time()+86400);
            }
            error_reporting()
    j'ai ça :
    Warning: Undefined array key "cook" in /htdocs/compteur_visites2.php on line 2
    mon cookie est pourtant définit si ce n'ai déjà fait a la ligne 30, alors comment le récuperer ?

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 113
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 113
    Points : 8 251
    Points
    8 251
    Billets dans le blog
    17
    Par défaut
    mon cookie est pourtant définit si ce n'ai déjà fait a la ligne 30
    Moi, je ne connais que ce que je vois Et ce que je vois m'indique que ton cookie ne sera jamais défini car tu fais :

    Si le cookie n'est pas défini
        Beaucoup de SQL
    Sinon // donc si le cookie est défini
        Un peu de SQL
        Définir le cookie
    FinSi
    Au final le cookie ne sera jamais défini => Tu dois revoir la logique de ton code ou nous en montrer plus (et mieux formaté)


    PS1 : error_reporting() ne s'utilise pas de cette manière, à placer en début de script pour afficher toutes les erreurs :

    error_reporting(E_ALL);
    https://www.php.net/manual/fr/functi...-reporting.php


    PS2 : il ne faut pas utiliser des variables potentiellement non définies comme $_COOKIE['cook'], il faut d'abord tester leur existence avec isset(), sinon on obtient des warnings et des comportements inattendus
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

Discussions similaires

  1. A lire avant toute chose !
    Par Michaël dans le forum Traduction LDD3
    Réponses: 3
    Dernier message: 21/02/2008, 15h43
  2. niveau cookies change tout seul
    Par ghis34 dans le forum Sécurité
    Réponses: 1
    Dernier message: 04/12/2007, 13h21
  3. IMPORTANT! A lire avant tout chose
    Par Aurelien.Regat-Barrel dans le forum Windows
    Réponses: 0
    Dernier message: 01/05/2002, 16h55

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