[php]Mon code est-il correct?

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:

Ç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]

Salut,

Je suis entièrement d’accord :slightly_smiling:

[code]<?php
define(‘VISITOR_FILE’, ‘compteur.txt’);

if (!isset($_SESSION[‘visitee’])) {
file_put_contents(VISITOR_FILE, intval(file_get_contents(VISITOR_FILE)) + 1);
$_SESSION[‘visitee’] = ‘dejavu’;
}

echo ‘

Cette page a été vue ’ . file_get_contents(VISITOR_FILE) . ’ fois !

’;
?>[/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>'; ?>

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

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

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=“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.