CodeS-SourceS
Rechercher un code, un tuto, une réponse

Classe permettant lister les visiteurs de votre site

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 179 fois - Téléchargée 5 fois

Contenu du snippet

Bonjour et bienvenue.
Au travers de cette classe "Visiteur" vous pouvez tracer et stocker des infos sur vos visites.
Nous traçons ici l'adresse IP,le navigateur, le site référent et bien sûr la date.
Nous en gardons trace sous forme de fichier TXT ou en Base de Donnée on peut aussi envoyer un mail.
Faites moi part de vos améliorations.
Cordialement.
<?php
class Visiteur
{
protected $ip;
protected $agent;
protected $referent;
protected $date_fr;
public function __construct()
	{
		$this->ip =gethostbyname($_SERVER['REMOTE_ADDR']); 	//Adresse IP Visiteur
		$this->agent =$_SERVER['HTTP_USER_AGENT'];			//Information Navigateur
		if(empty($_SERVER['HTTP_REFERER']))				//site référent ou accès direct au site
				{
					$this->referent='DIRECT ACCESS';
				}
				else
				{
					$this->referent= addslashes($_SERVER['HTTP_REFERER']);
				}//fin site référent
		$this->date_fr = date('j/m/Y;H:i:s',time());
	} //Fin construct
public function getIp()
	{
	return $this->ip;
	}
public function getAgent()
	{
	return $this->agent;
	}
public function getReferent()
	{
	return $this->referent;
	}
public function getDate_fr()
	{
	return $this->date_fr;
	}
public function addToFile($file)
	{
	//Stockage sur disque dans un fichier Visites.txt 
		$fichier=fopen($file,"a+"); //création si inexistant + Ajout en fin de fichier
		$ret_char=chr(13);
		$chaine_to_write=$this->getIp().";".$this->getAgent().";".$this->getDate_fr().";".$this->getReferent().";".$ret_char;
		$chaine=fwrite($fichier,$chaine_to_write);
		fclose($fichier);//Fin enregistrement sur disque
	}
public function sendByMail($destinataire,$sujet)
	{
	// Envoi de la visite par mail ... pour test, ne pas abuser
		 $message = 'une nouvelle visite !'. "\r\n";
		 $chaine_to_write=$this->getIp().";".$this->getAgent().";".$this->getDate_fr().";".$this->getReferent().";"."\r\n";
		 $message .= $chaine_to_write."\r\n";
		 mail($destinataire, $sujet, $message);
	}
public function sendToBdd($hote,$utilisateur,$motdepasse,$basededonnees)
	{
	// Ajout d'un enregsitrement dans la base de données
	//Stucture : TABLE :visites CHAMPS (id,ip,agent,referent,date_visite)
	$mysqli = new mysqli($hote,$utilisateur,$motdepasse,$basededonnees);
	if ($mysqli->connect_errno) 
		{echo "Echec lors de la connexion à MySQL : " . $mysqli->connect_error;}
		else
		{   //Connexion à la base de données établie
			$adresseIp=$this->getIp();$navigateur=$this->getAgent();$provenance=$this->getReferent();
			$requete = $mysqli->query("INSERT INTO visites (id,ip,agent,referent,date_visite)
									   VALUES (NULL,'$adresseIp','$navigateur','$provenance',CURRENT_TIMESTAMP)");
		}
	$mysqli->close();
	}
} // Fin Visites
// Améliorations à apporter dans une prochaine version
// Utiliser les Expressions régulière pour travailler les chaines de caractères issues de la variable agent
// détection des robot des visiteurs PC/MAC/LINUX/TABLETTE/SMARTPHONES etc...
// Stockage disque sous format XML
?>

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.