Bonjour à tous
(je rappel que je suis débutant en PHP)
j'ai installé un script de compteur de visites (3in1Compteur - version 0.1b
Site officiel : http://www.notoon.com) et j'aurais besoin de l'utiliser sur des pages à plusieurs niveaux donc j'ai pensé à mettre simplement l'adresse absolue du fichier à ouvrir mais ça ne marche pas il faut que j'ai l'adresse relative.
voila le code que j'ai insérer sur mon menu grace à une include:
Ma question est comment récupérer une adresse relative (qui remonte à la racine) lorsque je me situe sur une page dans un dossier de mon site ?
voila le code du compteur.php:
voila le code de config.inc:
Merci d'avance (j'espère que c'est compréhensible )
[/code]
(je rappel que je suis débutant en PHP)
j'ai installé un script de compteur de visites (3in1Compteur - version 0.1b
Site officiel : http://www.notoon.com) et j'aurais besoin de l'utiliser sur des pages à plusieurs niveaux donc j'ai pensé à mettre simplement l'adresse absolue du fichier à ouvrir mais ça ne marche pas il faut que j'ai l'adresse relative.
voila le code que j'ai insérer sur mon menu grace à une include:
Code:
<?php
include('3en1compteur/compteur.php');
echo '<!-- 3en1 compteur : www.notoon.com -->';
echo "Visiteurs : $v_total<br />";
echo "Aujourd'hui : $v_auj<br />";
echo "En ligne : $v_connecte";
?>
Ma question est comment récupérer une adresse relative (qui remonte à la racine) lorsque je me situe sur une page dans un dossier de mon site ?
voila le code du compteur.php:
Code:
<?php
/********************************
* ---------------- *
* | compteur.php | *
* ---------------- *
* 07/04/06 *
* 3in1Compteur - version 0.1b *
* *
* Site officiel : *
* http://www.notoon.com *
* ============================= *
* (c) 2006 NotoOn *
* Tous droits réservés *
********************************/
/***********************************
* Récupération de la configuration *
***********************************/
// Chemin absolu vers le fichier config.inc.php
$chemin = __FILE__;
$chemin = str_replace('compteur.php', '', $chemin);
// On vérifie que le fichier config.inc.php existe bien
if (!file_exists($chemin . 'config.inc.php')) {
echo 'Le fichier config.inc.php manque à l\'appel !';
} else {
require_once($chemin . 'config.inc.php');
// Connexion à la base de données
$base = @mysql_connect($base_serveur, $base_utilisateur, $base_mdp) or die('Erreur de connexion :' . mysql_error());
@mysql_select_db($base_nom, $base) or die('Erreur de sélection :' . mysql_error());
/***********************
* Traitement des dates *
***********************/
// On stocke dans $maintenant la date courante
$jour = date('j');
$mois = date('n');
$annee = date('Y');
$aujourdhui = mktime(0, 0, 0, $mois, $jour, $annee); // date d'aujourd'hui à minuit au format timestamp
$maintenant = time(); // date de l'instant présent au format timestamp
/***************************
* Vérifications préalables *
***************************/
// On vérifie si on a dépassé le nombre de jours pendant lesquels les IP sont conservées
$requete = "SELECT * FROM $base_table WHERE ip = 'reference'";
$resultat = mysql_query($requete);
$data = mysql_fetch_assoc($resultat);
// On stocke dans $total le nombre de visites total
$total = $data['total'];
// On récupère la dernière date à laquelle les IP ont été effacées
$ip_suppr = $data['prem_visite'];
// Si la durée de conservation des IP est dépassée
if ( ($maintenant-$ip_suppr) > ($garder_ip*24*60*60) ) {
// On vide tout sauf la première ligne de référence
$requete = "DELETE FROM $base_table WHERE ip != 'reference'";
$resultat = mysql_query($requete) or die('Impossible de supprimer les IP' . mysql_error());
// Et on remplace la date de référence par la date d'aujourd'hui à minuit
$requete = "UPDATE $base_table SET prem_visite = '$aujourdhui' WHERE ip = 'reference'"; // On met la clause WHERE au cas où les IP n'ont pas pu être effacées
$resultat = mysql_query($requete) or die('Impossible de changer la date de référence' . mysql_error());
}
// On récupère la date du dernier jour stocké dans la base
$date_stockee = $data['la_date'];
// Si on a changé de jour, on remet le nombre de visites quotidiennes à 0
if ( ($aujourdhui != $date_stockee) ) {
// Le nombre de visites de chaque visiteur de la base est remis à 0
$requete = "UPDATE $base_table SET total = '0' WHERE ip != 'reference'";
$resultat = mysql_query($requete);
// La date stockée est mise à jour à la date d'aujourd'hui
$requete = "UPDATE $base_table SET la_date = '$aujourdhui' WHERE ip = 'reference'";
$resultat = mysql_query($requete);
}
/**********************************
* Fonction de vérification des IP *
**********************************/
// On définit une fonction qui vérifie si l'IP ext exclue du comptage ou pas
function verif_ip($valeur, $tableau) {
$i = 0;
while ($i < count($tableau)) {
$resultatultat = strpos($valeur, $tableau[$i]);
if ($resultatultat === false) {
$i++;
} elseif (strpos($valeur, $tableau[$i]) == 0) {
return true;
} else {
$i++;
}
}
return false;
}
/*************************
* Traitement des visites *
*************************/
// Récupération de l'adresse IP du visiteur dans $ip
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
// Et du host correspondant à cette IP
$hostname = gethostbyaddr($ip);
// Si l'IP n'est pas dans la liste de celles à exclure
if ( verif_ip($ip, $exclure_ip) != true) {
// On compte le nombre d'entrées correspondant à l'IP de notre visiteur
$resultat = mysql_query("SELECT count(*) FROM $base_table WHERE ip='$ip'");
$ip_connue = mysql_result($resultat, 0, 0);
// Si aucune IP ne correspond, le visiteur est donc nouveau dans la base de données
if ($ip_connue == 0) {
// Alors on ajoute son heure de connexion, son IP, et on initialise son nombre de visites à 1
$requete = "INSERT INTO $base_table (prem_visite, la_date, total, ip, hostname) VALUES ('$maintenant', '$maintenant', 1, '$ip', '$hostname')";
$resultat = mysql_query($requete);
// Et on incrémente le nombre de visiteurs
$total++;
$requete = "UPDATE $base_table SET total = '$total' WHERE ip = 'reference'";
$resultat = mysql_query($requete);
}
/*
Sinon le visiteur est déjà dans la base, alors :
- soit il est déjà venu dans la même période d'unicité d'un visiteur
- soit la période est dépassée, alors le visiteur est considéré comme nouveau
*/
else {
// On récupère toutes les données qui lui correspondent
$requete = "SELECT * FROM $base_table WHERE ip = '$ip'";
$resultat = mysql_query($requete);
$data = mysql_fetch_assoc($resultat);
// On récupère la date de ses première et dernière visites
$prem_visite = $data['prem_visite'];
$der_visite = $data['la_date'];
// Si la période est dépassée
if ( ($maintenant - $prem_visite) > ($periode*60*60) ) {
// Incrémentation du compteur total
$total++;
$requete = "UPDATE $base_table SET total = '$total' WHERE ip = 'reference'";
$resultat = mysql_query($requete);
// On compte le visiteur comme nouveau, même si c'est dans la même journée
$nb_visites = $data['total'] + 1;
$requete = "UPDATE $base_table SET prem_visite = '$maintenant' , la_date = '$maintenant', total = $nb_visites WHERE ip = '$ip'";
$resultat = mysql_query($requete);
}
// Sinon on est dans la même période d'unicité
else {
// On met uniquement à jour l'heure de son dernier passage
$requete = "UPDATE $base_table SET la_date = '$maintenant' WHERE ip = '$ip'";
$resultat = mysql_query($requete);
}
}
}
/***********************
* Stockage des données *
***********************/
// Nombre de visites total
$requete = "SELECT total FROM $base_table WHERE ip = 'reference'";
$resultat = mysql_query($requete);
$v_total = mysql_fetch_row($resultat);
$v_total = $v_total[0];
// Nombres de visiteurs quotidiens
$requete = "SELECT sum(total) FROM $base_table WHERE ip != 'reference'";
$resultat = mysql_query($requete);
$v_auj = mysql_result($resultat, 0, 0);
// Nombre de visiteurs en ligne
$en_ligne = $maintenant - ($intervalle*60);
$requete = "SELECT count(*) FROM $base_table WHERE (ip != 'reference') AND (la_date >= '$en_ligne')";
$resultat = mysql_query($requete);
$v_connecte = mysql_result($resultat, 0, 0);
// On ferme la connexion à la base de données
mysql_close();
}
?>
voila le code de config.inc:
Code:
<?php
/********************************
* ------------------ *
* | config.inc.php | *
* ------------------ *
* 07/04/06 *
* 3in1Compteur - version 0.1b *
* *
* Site officiel : *
* http://www.notoon.com *
* ============================= *
* (c) 2006 NotoOn *
* Tous droits réservés *
********************************/
// Paramètres de connexion
$base_serveur = 'localhost'; // serveur de la base de données
$base_utilisateur = 'admin_c'; // nom d'utilisateur
$base_mdp = '167943'; // mot de passe
$base_nom = 'admin_compteur'; // nom de la base de données
$base_table = 'compteur'; // nom de la table qui sera créée sans espaces (par défaut : compteur)
// Paramètres du compteur
$garder_ip = 2; // nombre de jours que sont conservées les IP dans la base de données (défaut : 2 jours)
$intervalle = 2; // intervalle de temps en minutes pour compter le nombre de connectés des X dernières minutes (défaut : 2 minutes)
$periode = 24; // durée en heures pendant laquelle une IP est comptée comme unique (défaut : 24h)
$total_initial = 410400; // nombre initial de visiteurs au compteur
$exclure_ip = array(); // liste des IP (partielles ou complètes) à ajouter sous la forme array('127.0.0.1', '127.0.0.2', '168.254.')
?>
Merci d'avance (j'espère que c'est compréhensible )
[/code]