Accueil Annuaire Articles Flash Liste Smiles War connexion
Navigation
Conseils Prog.
- Images
- Php
-- Astuce PHP/Mysql
-- Faire son Propre Jeu chapitre 1
-- Faire son Propre Jeu chapitre 2 MySql
-- Faire son Propre Jeu chapitre 3 PHP
-- Flash / PHP
-- google sitemap
-- Petite Introduction à PHP
-- PHP et la sécurité
-- ranger ses Referers
- Smiles War
- web 3D
Divers
Inspiration
Jeux Classiques
Jeux de mots
Jeux de Rôle Papier
Jeux Flash
Jeux Gratuits
Jeux Pocket PC
Jeux pour enfants
Jeux pour telephones
Jeux Shareware
Jeux TV
Jeux Video Commerciaux
Jeux Web
Jouer.org
Le Monde du Jeu
Musique

Php :


ranger ses Referers

PHP range dans $_SERVER['HTTP_REFERER'] la page dont provient le visiteur.

Cela représente la page précédente.

Certains navigateurs ne renseignent pas cette valeur mais cela permets d'obtenir des statistiques sur qui viens d'où afin d'améliorer les pages qui ont du succés.

exemple pratique ici: Si vous avez des visiteurs qui cherchent des cheats codes pour je jeu machin et qu'ils ne le trouvent pas sur la page, c'est dommage :p

Le code qui suit n'est pas complet, il est là pour vous donner les moyens de faire votre propre systéme:

ce fichier est a mettre en include dans un fichier déjà connecté à votre basse de donnée

<?
$ref_ = securiser($_SERVER['HTTP_REFERER']);
//Je vous laisse le plaisir de choisir comment vous sécurisez vos variables. maintenant on regarde si l'on connais le referrant
$req=mysql_query("select id,refer,`start`,q,actif from `agentref`");
while(list($fromid,$from,$fromstart,$fromq,$fromactif) = mysql_fetch_array($req))
{
if(ereg("$from",$ref_)) {$idmot=$fromid;$refq=$fromq;$refstart=$fromstart;}
if($fromactif==0) $ref_="poubelle";$idmot=2;

}

// q représente la variable utilisée par le moteur (google) start son moyen de se retrouver dans ses pages (start pour google :p) si on ne connait pas le referrant, on le traite comme un referrant "normal" on ne parsera pas son url (il faut ajouter dans la base de donnée q et start spécifique au moteur pour que le parser fonctionne)
if($idmot=='' )
{
preg_match('!^([a-z0-9]+://)?([^/:]+)(:[\d]+)?(/.*$)?!i', $ref_, $out);
mysql_query("INSERT INTO `agentref` ( `id` , `refer` )VALUES
('', '".secure("$out[2]")."' );" ) ;
}
else
{
mysql_query("update `agentref` set nb=nb+1 where id='$idmot'");
}
if(($refq=="")and($idmot<>'' ))
{
//cas où l'on a déjà eu un referant de cette page, on ajoute juste un dans nos stats

mysql_query("update `agentrefstats` set nb=nb+1 where ref='$idmot'
and mot='".secure($ref_)."';" );
//sinon c'est une nouvelle page, on crée

if(mysql_affected_rows()<>1)
mysql_query("INSERT INTO `agentrefstats` ( `id` , `ref` , `mot` , `page` )VALUES
('', '$idmot', '".secure($ref_)."', '' );" ); }
elseif($idmot<>"")
{
//là on traite les moteurs de recherche, un ereg serait surement plus facile mais je ne l'ai pas trouvé :p
		$refql=strlen($refq)+1;		$refstartl=strlen($refstart)+1; 
// recherche des mots
		$refs = stristr($ref_, $refq."=");
$refs=substr($refs,$refql,strpos($refs,"&")-$refql);

// recherche de la page
		$refpos = stristr($ref_, $refstart."=");
$refpos=substr($refpos,$refstartl,strpos($refpos,"&")-$refstartl );
si on connais, on ajoute +1
			mysql_query("update `agentrefstats` set nb=nb+1 where 
ref='$idmot' and mot='".secure("$refs")."' and page='".secure("$refpos")."' ;" );
sinon on ajoute la ligne dans la table
	
if(mysql_affected_rows()<>1)
mysql_query("INSERT INTO `agentrefstats` ( `id` , `ref` , `mot` , `page` )VALUES
('', '$idmot', '".secure("$refs")."', '".secure("$refpos")."' ) ;" ) ;
}
?>




La table SQL qui corresponds:

agentref contient tous les "sites" referrants et agentrefpage les "pages ou mots clef"
CREATE TABLE `agentref` (
`id` int(11) NOT NULL auto_increment,
`refer` varchar(150) NOT NULL default '',
`nb` int(11) NOT NULL default '0',
`start` varchar(10) NOT NULL default '',
`q` varchar(10) NOT NULL default '',
`actif` int(11) NOT NULL default '1',

`icon` varchar(4) NOT NULL default '1233',
`urldebut` varchar(50) NOT NULL default '',
UNIQUE KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=18 ;

--
-- Contenu exemple de la table `agentref`
--
INSERT INTO `agentref` VALUES (1, 'www.google.fr', 4, 'start', 'q', 1, '822',
'http://www.google.fr/search?' ) ;
INSERT INTO `agentref` VALUES (2, 'liens non suivis', 0, '', '', 1, '822',
'' ) ;
INSERT INTO `agentref` VALUES (6, 'yahoo.com', 0, 'pstart', 'p', 1, '822',
'http://fr.search.yahoo.com/search?' ) ;
INSERT INTO `agentref` VALUES (7, 'search.msn.com', 0, 'first', 'q', 1, '822',
'http://search.msn.com/results.aspx?' ) ;
INSERT INTO `agentref` VALUES (8, 'www.jouer.org', 0, '', '', 1, '142', '' ) ;
INSERT INTO `agentref` VALUES (17, 'www.webrankinfo.com', 2, '', '', 1, '142', '' ) ;

CREATE TABLE `agentrefstats` (
`id` int(11) NOT NULL auto_increment,
`ref` int(11) NOT NULL default '0',
`mot` varchar(150) NOT NULL default '',
`page` char(3) NOT NULL default '',
`nb` int(11) NOT NULL default '0',
UNIQUE KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=10 ;


Ma page d'analyse de ces stats est vraiment spécifique :p avec plein de liens partout... aucun interêt je penses.

Remarque
Je considére que la premiére visite depuis un referrant n'a aucun interêt, je prends donc le nom du site mais ne me préoccupe pas trop de la page.

par jouer.org
dernière mise à jour:16/05/2005
Share |

Jeux en ligne jouer.org Site declaré à la CNIL n° 822436 ~ Ajouter un site ~ 810