Obtenir une adresse relative

Nouveau WRInaute
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:

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]
 
Nouveau WRInaute
Bonjour,

Ce que veut dire ayor :

$adresseRelative = $_SERVER['REQUEST_URI'];


$adresseRelative te donnera /index.htm si tu te trouves sur la page d'accueil. mais /videos/afficher.php si tu te trouve dans un dossier videos sur la page afficher.php

Ca devrait marcher.
 
Discussions similaires
Haut