J'aimerais vérifier par l'adresse IP qu'une personne n'a pas déjà accédé à une page.
Voici mon code :
Code : Tout sélectionner
$logfilename = "controle-ip.log";
touch($logfilename); // Crée le fichier s'il n'existe pas, sinon modifie juste la date de dernier accès
$ip = $_SERVER['REMOTE_ADDR'];
// $file = ['127.0.0.1', '7.0.0.4', '17.0.0.2']; // Pour le test, ça marche
$file = file($logfilename); // file() lit un fichier et renvoie le résultat dans un tableau
if (in_array($ip, $file)) { /* On vérifie si $ip est dans le tableau $file */
echo '<h2>Vous avez déjà participé !</h2>';
exit(); // Si votre IP est déjà présente, on bloque
}
else {
echo '<h2>Merci !</h2>';
array_push($file, $ip."\n"); // Empile à la fin du tableau $file
}
$nb_lines = count($file); // Compter nb lignes
if ($nb_lines > 1000) {
unset($file[0]); // Supprime la première ligne si le nb de lignes est supérieur à 1000. C'est pour éviter d'avoir un fichier log trop lourd
}
file_put_contents($logfilename, $file); // Écrit des données dans un fichier. Revient à appeler les fonctions fopen(), fwrite() et fclose() successivement.
Par contre, si je crée un tableau manuellement pour tester, alors ça marche :
Code : Tout sélectionner
$file = ['127.0.0.1', '7.0.0.4', '17.0.0.2'];