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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
<?php
//J'ai fait le choix de creer a la base des fichiers texte qui contiennent deja les valeurs.
//Au debut, le fichier contenant le nombre de visites contient un nombre qui vaut zero, bien entendu.
// Recuperation de l'adresse IP externe du visiteur :
$IPvisiteur = $_SERVER["REMOTE_ADDR"];
echo '$IPvisiteur = '.$IPvisiteur ;
//J'indique le chemin du fichier que je desire manipuler, ainsi que son nom, et je l'introduis dans la variable
$fichierIPvisiteurs="/var/www/SiteWeb/compteur/IPvisiteurs.txt";
echo ' $fichierIPvisiteurs = ' .$fichierIPvisiteurs;
// pour des informations sur l'utilisation de fopen
/*
'r' Ouvre en lecture seule, et place le pointeur de fichier au debut du fichier.
'r+' Ouvre en lecture et ecriture, et place le pointeur de fichier au debut du fichier.
'w' Ouvre en ecriture seule ; place le pointeur de fichier au debut du fichier et reduit la taille du fichier a* 0. Si le fichier n'existe pas, on tente de le creer.
'w+' Ouvre en lecture et ecriture ; place le pointeur de fichier au debut du fichier et reduit la taille du fichier a* 0. Si le fichier n'existe pas, on tente de le creer.
'a' Ouvre en ecriture seule ; place le pointeur de fichier a* la fin du fichier. Si le fichier n'existe pas, on tente de le creer.
'a+' Ouvre en lecture et ecriture ; place le pointeur de fichier a* la fin du fichier. Si le fichier n'existe pas, on tente de le creer.
'x' Cree et ouvre le fichier en ecriture seulement ; place le pointeur de fichier au debut du fichier. Si le fichier existe deja*, fopen() va echouer, en retournant FALSE et en generant une erreur de niveau E_WARNING. Si le fichier n'existe pas, fopen() tente de le creer. Ce mode est l'equivalent des options O_EXCL|O_CREAT pour l'appel systeme open(2) sous-jacent.
'x+' Cree et ouvre le fichier pour lecture et ecriture; le comportement est le meme que pour 'x'.
'c' Ouvre le fichier pour ecriture seulement. Si le fichier n'existe pas, il sera cree, s'il existe, il n'est pas tronque (contrairement a* 'w') et l'appel a* la fonction n'echoue pas (comme dans le cas de 'x'). Le pointeur du fichier est positionne au debut. Ce mode peut etre utile pour obtenir un verrou (voyez flock()) avant de tenter de modifier le fichier, utiliser 'w' pourrait tronquer le fichier avant d'obtenir le verrou (vous pouvez toujours tronquer grace Ã* ftruncate()).
'c+' Ouvre le fichier pour lecture et ecriture, le comportement est le meme que pour le mode 'c'.
*/
$saut_de_ligne = "\n";
$tabulation= "\t";
//J'indique les informations dans le fichier de details
$date = date("d-m-Y");
$heure = date("H:i");
//Ouverture du fichiers dans lequel je vais inserer les details de connection
$fichierDetailsIP = "/var/www/SiteWeb/compteur/DetailsIP_pageAccueil.txt";
echo ' $fichierDetailsIP = ' .$fichierDetailsIP;
$ouverture_fichierDetailsIP_ecriture =fopen($fichierDetailsIP,"a");
//Si l'ouverture du fichier a echoue
if (!$ouverture_fichierDetailsIP_ecriture)
{
echo " echec d'ouverture du fichier details ";
}
//Si l'ouverture du fichier a reussi
if ($ouverture_fichierDetailsIP_ecriture)
{
echo " reussite d'ouverture du fichier details ";
fwrite($ouverture_fichierDetailsIP_ecriture, $IPvisiteur);
fwrite($ouverture_fichierDetailsIP_ecriture, $tabulation);
fwrite($ouverture_fichierDetailsIP_ecriture, $date);
fwrite($ouverture_fichierDetailsIP_ecriture, $tabulation);
fwrite($ouverture_fichierDetailsIP_ecriture, $heure);
fwrite($ouverture_fichierDetailsIP_ecriture, $saut_de_ligne);
}
fclose($ouverture_fichierDetailsIP_ecriture);
//Je compte aussi les acces a la page d'accueil
$fichierAccesPageAccueuil = "/var/www/SiteWeb/compteur/nombre_acces_page_accueil.txt";
$ouverture_fichierAccesPageAccueuil_lecture_ecriture =fopen($ichierAccesPageAccueuil,"r+");
if (!$ouverture_fichierAccesPageAccueuil_lecture_ecriture)
{
echo " echec d'ouverture du fichier nombre_acces_page_accueil ";
}
if ($ouverture_fichierAccesPageAccueuil_lecture_ecriture)
{
echo " reussite d'ouverture du fichier nombre_acces_page_accueil ";
$AccesPageAccueil = fgets($ouverture_fichierAccesPageAccueuil_lecture_ecriture);
$AccesPageAccueil = $AccesPageAccueil + 1;
$ouverture_fichiervideAccesPageAccueuil_ecriture =fopen($ichierAccesPageAccueuil,"w");
fwrite($ouverture_fichiervideAccesPageAccueuil_ecriture, $AccesPageAccueil);
fclose($ouverture_fichiervideAccesPageAccueuil_ecriture);
}
fclose($ouverture_fichierAccesPageAccueuil_lecture_ecriture);
//J'ai besoin que chaque ligne d'adresse IP soit unique
//Il m'est necessaire que le fichier d'adresses IP ne contiennent pas de doublons ou plus
//Normalement c'est le cas puisque le fichier est vide au debut
//Le fichier est rempli par une nouvelle adresse IP lorsqu'elle n'est pas deja presente dedans
//J'associe l'ouverture du fichier a* $ouverture_fichierIPvisiteurs
//J'utilise l'option 'r' pour indiquer quel'ouverture du fichier n'est que dans un objectif de lecture
$ouverture_fichierIPvisiteurs_lecture =fopen($fichierIPvisiteurs,"r");
if (!$ouverture_fichierIPvisiteurs_lecture)
{
echo " echec d'ouverture du fichier fichierIPvisiteurs ";
}
if ($ouverture_fichierIPvisiteurs_lecture)
{
echo " reussite d'ouverture du fichier fichierIPvisiteurs ";
}
//Je cree une variable qui aura pour objectif de comparer et verifier l'adresse IP du visiteur est deja
//renseignee dans le fichier des adresses IP ou pas.
//Si l'adresse IP n'est pas deja renseignee dans le fichier des adresses IP, c'est un nouveau visiteur
//Il faudra donc augmenter le compteur de 1
//Je pars du principe que l'adresse IP du visiteur n'est pour le moment pas renseignee dans le fichier
//d'adresses IP
$IPdejapresente = 0;
//Je lance ensuite l'analyse afin de verifier si l'adresse IP recuperee est bien nouvelle ou non
// Si le fichier a pu etre ouvert (logiquement c'est le cas, puisque je l'ai deja cree au prealable dans ce but)
if ($ouverture_fichierIPvisiteurs_lecture)
{
//Tant qu'on est pas arrive a* la fin du fichier
while (!feof($ouverture_fichierIPvisiteurs_lecture))
{
//On lit la ligne courante
$lignelue = fgets($ouverture_fichierIPvisiteurs_lecture);
//Si la ligne lue possede deja l'adresse IP du visiteur actuel
if ($lignelue == $IPvisiteur)
{
//Je mets la valeur true a* la variable $IPdejapresente
$IPdejapresente = 1;
}
//A l'inverse, si la ligne lue ne possede pas l'adresse IP du visiteur actuel, on ne fait rien
//Et on passe a la ligne suivante en relancant la meme analyse
}
}
//Fermeture du fichier
fclose ($ouverture_fichierIPvisiteurs_lecture);
//Si $IPdejapresente vaut 1 on ne fait rien
//Si $IPdejapresente vaut 0, alors il va falloir la rajouter au fichier d'adresses IP, et augmenter
//le compteur de 1
//Je commence par associer a des variables les ouvertures de fichier dont je vais avoir besoin
$fichier_CompteurVisites="/var/www/SiteWeb/compteur/compteur_visites.txt";
$ouverture_fichierCompteurVisites_lecture = fopen($fichier_CompteurVisites,"r");
$ouverture_fichierCompteurVisites_ecriture = fopen($fichier_CompteurVisites,"w");
$ouverture_fichierIPvisiteurs_ecritureIPalafin = fopen($fichierIPvisiteurs,"a+");
$nombre_visites = fgets($ouverture_fichierCompteurVisites_lecture);
//Si l'adresse IP n'est pas presente dans la liste du fichier d'adresses IP
if ($IPdejapresente == 0)
{
// ETAPE 1 : Ajout de la nouvelle adresse IP au fichier
// Je saute une ligne apres avoir ouvert le fichier IP visiteurs
fwrite($ouverture_fichierIPvisiteurs_ecritureIPalafin, $saut_de_ligne);
// J'ajoute la nouvelle adresse Ip au fichier
fwrite($ouverture_fichierIPvisiteurs_ecritureIPalafin, $IPvisiteur);
// ETAPE 2 : On augmente de 1 le nombre de visites
// Je vais me servir du fichier texte compteur_visites.txt (a la base, il possedait la valeur 0 (zero)).
//Le fichier compteur_visites.txt ne comprend qu'une seule ligne, qui contient juste le nombre de visites recencees
$nombre_visites = $nombre_visites + 1 ;
//Il faut ensuite mettre a jour le fichier qui contient le nombre de visites
fwrite($ouverture_fichierCompteurVisites_ecriture, $nombre_visites);
}
//Affichage du nombre de visites
echo $nombre_visites;
echo " visites";
//Fermeture des fichier
fclose ($ouverture_fichierCompteurVisites_lecture );
fclose ($ouverture_fichierCompteurVisites_ecriture);
fclose ($ouverture_fichierIPvisiteurs_ecritureIPalafin);
?> |
Partager