# \[php\]Mon code est-il correct?

**URL:** <https://www.debian-fr.org/t/php-mon-code-est-il-correct/29016>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 11:48 UTC](https://www.debian-fr.org/t/php-mon-code-est-il-correct/29016 "2016-02-20T23:48:10Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 20, 2016, 11:48 UTC](https://www.debian-fr.org/t/php-mon-code-est-il-correct/29016/1 "2016-02-20T23:48:10Z")

</div>

Bonjour!  
J’ai fait un petit site récemment, et comme j’apprend un peu à l’arrache, je ne suis pas sûr de moi, et tester en local ne suffit pas forcément.

Je souhait simplement afficher le nombre de visites de la page, mais que raffraichir simplement la page ne compte pas (utilisation d’une session).  
Voici donc le code :

[code]\<?php

$monfichier = fopen(‘compteur.txt’, ‘r+’);

$pages\_vues = fgets($monfichier);

if ( isset($\_SESSION[‘visitee’]))  
{  
echo ‘

Cette page a été vue ’ . $pages\_vues . ’ fois !

’;  
}  
else  
{  
$pages\_vues = $pages\_vues + 1;  
fseek($monfichier, 0);  
fputs($monfichier, $pages\_vues);  
$\_SESSION[‘visitee’] = “dejavu”;  
echo ‘

Cette page a été vue ’ . $pages\_vues . ’ fois !

’;

}  
fclose($monfichier);

?\>[/code]  
Voila, merci d’avance! ![:pray:](https://www.debian-fr.org/uploads/default/original/1X/2abd93f5bdd4258c1e4775cddd8a93bd8304edc5.gif "Pray")

---

<div class="post-metadata">

**Author:** ![BenJi](https://www.debian-fr.org/user_avatar/www.debian-fr.org/benji/32/3592_2.png) [@BenJi](https://www.debian-fr.org/u/BenJi)\
**Post date:** [Février 20, 2016, 11:48 UTC](https://www.debian-fr.org/t/php-mon-code-est-il-correct/29016/2 "2016-02-20T23:48:12Z")

</div>

Ça fait longtemps que j’ai pas fait de php, mais ça à l’air de faire ce que tu veux… Par contre y a moyen de simplifier quand même :

[code]\<?php

$monfichier = fopen(‘compteur.txt’, ‘r+’);

$pages\_vues = fgets($monfichier);

if ( !isset($\_SESSION[‘visitee’])) {  
$pages\_vues++;  
fseek($monfichier, 0);  
fputs($monfichier, $pages\_vues);  
$\_SESSION[‘visitee’] = “dejavu”;  
}  
fclose($monfichier);

echo ‘

Cette page a été vue ’ . $pages\_vues . ’ fois !

’;

?\>[/code]

---

<div class="post-metadata">

**Author:** ![Tycho\_Brahe](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/ec9cab/32.png) [@Tycho\_Brahe](https://www.debian-fr.org/u/Tycho_Brahe)\
**Post date:** [Février 20, 2016, 11:48 UTC](https://www.debian-fr.org/t/php-mon-code-est-il-correct/29016/3 "2016-02-20T23:48:13Z")

</div>

Salut,

> [@BenJi](#):
>
> Par contre y a moyen de simplifier quand même

Je suis entièrement d’accord 🙂

[code]\<?php  
define(‹&nbsp;VISITOR\_FILE&nbsp;›, ‹&nbsp;compteur.txt&nbsp;›);

if (!isset($\_SESSION[‹&nbsp;visitee&nbsp;›])) {  
file\_put\_contents(VISITOR\_FILE, intval(file\_get\_contents(VISITOR\_FILE)) + 1);  
$\_SESSION[‹&nbsp;visitee&nbsp;›] = ‹&nbsp;dejavu&nbsp;›;  
}

echo ‹&nbsp;

Cette page a été vue ’ . file\_get\_contents(VISITOR\_FILE) . ’ fois !

&nbsp;›;  
?\>[/code]

Et en mode hard-core super moche juste parce que c’est amusant de le faire en une seule instruction :

`<?php
echo '<p class="compteur">Cette page a été vue ', (isset($_SESSION['visitee']) ? file_get_contents('compteur.txt') : file_put_contents('compteur.txt', intval(file_get_contents('compteur.txt')) + 1) * ($_SESSION['visitee'] = 42) * 0 + file_get_contents('compteur.txt')), ' fois !</p>';
?>`

---

<div class="post-metadata">

**Author:** ![Glorf](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/d6d6ee/32.png) [@Glorf](https://www.debian-fr.org/u/Glorf)\
**Post date:** [Février 20, 2016, 11:48 UTC](https://www.debian-fr.org/t/php-mon-code-est-il-correct/29016/4 "2016-02-20T23:48:15Z")

</div>

$\_SESSION[‘visitee’] = ‘dejavu’;  
Pourquoi pas utiliser un booléen ? ça serait plus adapté ici …

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 20, 2016, 11:48 UTC](https://www.debian-fr.org/t/php-mon-code-est-il-correct/29016/5 "2016-02-20T23:48:19Z")

</div>

Merci beaucoup!  
Euh, c’est mon premier site hein, donc pas tapé! 🙂

---

<div class="post-metadata">

**Author:** ![Glorf](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/d6d6ee/32.png) [@Glorf](https://www.debian-fr.org/u/Glorf)\
**Post date:** [Février 20, 2016, 11:48 UTC](https://www.debian-fr.org/t/php-mon-code-est-il-correct/29016/6 "2016-02-20T23:48:24Z")

</div>

C’est juste un conseil ;  
tu mets $\_SESSION[‘visitee’]=TRUE;  
et ensuite ta condition devient if($\_SESSION[‘visitee’]), ce qui est équivalent à if($\_SESSION[‘visitee’]==TRUE)

---

<div class="post-metadata">

**Author:** ![Tycho\_Brahe](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/ec9cab/32.png) [@Tycho\_Brahe](https://www.debian-fr.org/u/Tycho_Brahe)\
**Post date:** [Février 20, 2016, 11:48 UTC](https://www.debian-fr.org/t/php-mon-code-est-il-correct/29016/7 "2016-02-20T23:48:30Z")

</div>

[quote=“Glorf”]C’est juste un conseil ;  
tu mets $\_SESSION[‘visitee’]=TRUE;  
et ensuite ta condition devient if($\_SESSION[‘visitee’]), ce qui est équivalent à if($\_SESSION[‘visitee’]==TRUE)[/quote]  
Non, quel que soit la valeur que tu y met il faudra tester son existence (avec isset, empty ou autre) sous peine de se prendre une notice ‘undefined variable’ lorsque la personne vois la page pour la première fois. Si on veux vraiment améliorer le code il faudrait plutôt utiliser un cookie à la place des variables de session, ça évite que le répertoire temporaire du serveur ne contienne des trucs pour rien.
