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 :

undifined variable sur compteur.


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de zebulon94
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 169
    Points : 212
    Points
    212
    Par défaut undifined variable sur compteur.
    Bonjour à tous,

    Je me remet tout doucement au php et au dev web. J'ai voulu rajouter un compteur et je me retrouve avec une erreur que je n'arrive pas à corriger.

    L'erreur est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in Unknown on line 0
    Voici le code du compteur :

    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
    session_start(); // DEMARRE LA SESSION
    // SAUVGARDE LA VARIABLE hits DANS LE FICHIER DE SESSION
    $_SESSION['hits'] = $hits; //le problème viendrait d'ici...
    
    
    // TRAITEMENT SUR LE FICHIER TEXTE
    if(empty($hits)){
      $fp=fopen("compteur.txt","a+"); //OUVRE LE FICHIER compteur.txt
      $num=fgets($fp,4096); // RECUPERE LE CONTENUE DU COMPTEUR
      fclose($fp); // FERME LE FICHIER
      $hits=$num - -1;  // TRAITEMENT
      $fp=fopen("compteur.txt","w");  // OUVRE DE NOUVEAU LE FICHIER
      fputs($fp,$hits); // MET LA NOUVELLE VALEUR
      fclose($fp);  // FERME LE FICHIER
    }
    // AFICHAGE DU COMPTEUR
    echo "<TABLE align=center>";
    echo "<TR>";
    echo "<TD STYLE='border:1pt Solid navy;' >";
    echo "<FONT FACE='Verdana, Arial, Helvetica, sans-serif' SIZE=1>";
    echo "Visiteurs : $hits"; // VARIABLE DU COMPTEUR
    echo "</FONT>";
    echo "</TD>";
    echo "</TR>";
    echo "</TABLE>";
    
    ?>
    Merci d'avance pour vote aide.

    D.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    D'ou vient $hits ?

  3. #3
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Salut ,
    tu as essayé de suivre ce que te demande le message ?

  4. #4
    Membre actif Avatar de zebulon94
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 169
    Points : 212
    Points
    212
    Par défaut
    euh $hit .... bonne question, en fait je veux ouvrir une session pour que le compteur evite de s'incrémenter de 1 à chaque changement de page .

    RideKick, oui j'ai essayé de suivre se que me dis le message. L'erreur est en réalité caché mais cela ne fonctionne toujours pas ...

    D.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si $_SESSION['hits'] est juste la pour marquer que tu as déjà fait l'incrémentation, c'est plutot quelque chose comme ca que tu veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    session_start(); 
     
    if(isset($_SESSION['hits'])){ // si $_SESSION['hits'] est défini 
      $fp=fopen("compteur.txt","a+"); //OUVRE LE FICHIER compteur.txt
      $num=fgets($fp,4096); // RECUPERE LE CONTENUE DU COMPTEUR
      fclose($fp); // FERME LE FICHIER
      $hits=$num - -1;  // TRAITEMENT
      $fp=fopen("compteur.txt","w");  // OUVRE DE NOUVEAU LE FICHIER
      fputs($fp,$hits); // MET LA NOUVELLE VALEUR
      fclose($fp);  // FERME LE FICHIER
      $_SESSION['hits'] = TRUE; // on défini $_SESSION['hits']
    }

  6. #6
    Membre actif Avatar de zebulon94
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 169
    Points : 212
    Points
    212
    Par défaut
    ok juste petite question, la fonctions isset() permet de savoir si la variable est définie.
    Dans notre exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(isset($_SESSION['hits'])){
    }
    Si l'utilisateur entreprend sa première connexion,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isset($SESSION['hits']) =>retourne FALSE
    donc
    le if() ne sera pas utlisé, et j'aurais une non ?

    Merci de vos réponse
    D.

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Heu oui pardon je l'ai fais à l'envers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!isset($_SESSION['hits'])){ // si $_SESSION['hits'] n'est  pas défini

  8. #8
    Membre actif Avatar de zebulon94
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 169
    Points : 212
    Points
    212
    Par défaut
    Ya pa de mal, bon sa marche mais a chaque fois que la page est rafraichis sa me fait +1 en visite alors voila à quoi j'ai pensé, peux tu me dire se que tu en pense ...?

    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
    // TRAITEMENT SUR LE FICHIER TEXTE
    if(!isset($_SESSION['hits'])){ //si isset($_SESSION['hits']) n'est pas def alors 
      $fp=fopen("compteur.txt","a+"); //OUVRE LE FICHIER compteur.txt
      $num=fgets($fp,4096); // RECUPERE LE CONTENUE DU COMPTEUR
      fclose($fp); // FERME LE FICHIER
      $hits=$num - -1;  // TRAITEMENT
      $fp=fopen("compteur.txt","w");  // OUVRE DE NOUVEAU LE FICHIER
      fputs($fp,$hits); // MET LA NOUVELLE VALEUR
      fclose($fp);  // FERME LE FICHIER
      $_SESSION['hits'] = $hits;
    }
    else //Si elle est def alors on récupère seulement la valeur du fichier pour 
          //que se soit à jour 
    {
      $fp=fopen("compteur.txt","a+"); //OUVRE LE FICHIER compteur.txt
      $num=fgets($fp,4096); // RECUPERE LE CONTENUE DU COMPTEUR
      $hits=$num;
    }

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'ai vérifié mais le code tel que je l'ai ecris (avec la correction) fonctionne : le rafraichissement de la page n'incremente pas la valeur dans compteur.txt

    Au passage, pourquoi tu fais - - 1 au lieu de +1 ?

  10. #10
    Membre actif Avatar de zebulon94
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 169
    Points : 212
    Points
    212
    Par défaut
    Oui, mais chez moi il me retourne une erreur lors de l'affichage de la variables $hits. c'est pour palier à cela que qu'il y a le else ... Voici le code cela va expliquer mon raisonnement et tu me le confirmera .

    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
    session_start(); // DEMARRE LA SESSION
     
    // TRAITEMENT SUR LE FICHIER TEXTE
    if(isset($_SESSION['hits']) == FALSE){
      $fp=fopen("compteur.txt","a+"); //OUVRE LE FICHIER compteur.txt
      $num=fgets($fp,4096); // RECUPERE LE CONTENUE DU COMPTEUR
      fclose($fp); // FERME LE FICHIER
      $hits=$num + 1;  // TRAITEMENT
      $fp=fopen("compteur.txt","w");  // OUVRE DE NOUVEAU LE FICHIER
      fputs($fp,$hits); // MET LA NOUVELLE VALEUR
      fclose($fp);  // FERME LE FICHIER
      $_SESSION['hits'] = $hits;
    }
    else
    {
      $fp=fopen("compteur.txt","a+"); //OUVRE LE FICHIER compteur.txt
      $num=fgets($fp,4096); // RECUPERE LE CONTENUE DU COMPTEUR
      $hits=$num;
    }
    // AFICHAGE DU COMPTEUR
    echo "<TABLE>";
    echo "<TR>";
    echo "<TD STYLE='1px border:Solid navy;' >";
    echo "<FONT FACE='Verdana, Arial, Helvetica, sans-serif' SIZE=1 color=#A0A0A0>";
    echo "nombre de visites : $hits"; // VARIABLE DU COMPTEUR  
    echo "</FONT>";
    echo "</TD>";
    echo "</TR>";
    echo "</TABLE>";
     
    // IMPORTANT //
    //ne pas oublier de créer le fichier compteur.txt
     
    ?>
    Voila comme sa si sa intéresse quelqu'un .... tout y es .. bien sur après validation de sabotage.

    Au passage, pourquoi tu fais - - 1 au lieu de +1 ?
    C'est une bonne question, j'avais récupéré se code pour ne pas perdre de temps car le site doit avoir une version béta le plus rapidement possible... Mais en fait sa ne ma pas arrangé, sa me servira de leçon et puis sa ma permis de me remettre dedans lol

    Merci en tout cas

Discussions similaires

  1. Définir des variables sur le serveur avec PHP.
    Par ronio dans le forum Langage
    Réponses: 2
    Dernier message: 04/08/2006, 10h23
  2. debutant lecture de plusieur variable sur une meme ligne
    Par Slumpy dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 16/06/2006, 19h37
  3. Variable sur plusieurs ligne
    Par krfa1 dans le forum ASP
    Réponses: 5
    Dernier message: 20/04/2006, 10h26
  4. ajouter une variable sur un control
    Par gijy dans le forum MFC
    Réponses: 15
    Dernier message: 21/03/2006, 18h18
  5. Utilisation d'une variable sur plusieurs unités
    Par Yamaneko dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2003, 11h23

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