Version complète: sur le forum Webmaster Hub : Liens référants
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Pages: 1, 2
Gribouille26
Salut, biggrin.gif

J'aimerai savoir comment on peut comptabiliser le nombre de visiteurs qui ont été envoyé par un lien placé sur un autre site. :yoot:
BZHcool
Salut,

Pour voir celà moi perso j'utilise les stats de Xiti... et je regarde les referers... ainsi tu vois d'où viennent les visiteurs, du moins par quel liens extérieurs ils arrivent sur ton site!

Tu peux ainsi voir par jour, par mois ou depuis le début de l'année.
Gribouille26
Je suis allée voir Xiti, mais c'est pour un site pro et je ne veux pas leur logo!
Du coup, il faut payer! sad.gif

Je voudrai trouver un script gratuit...
Silmaril
Si tu ne fais pas trop de visiteurs (a verifier sur leur site, me rappelles plus la blush.gif ), direct-stats.com est plutot bien.
Ldo
sinon il y a toujour la solution du script maison made-in-toi-meme avec l'aide de $SERVER['referer'] wink.gif
Berberber
CITATION(Ldo @ vendredi 23 avril 2004, 17:06)
sinon il y a toujour la solution du script maison made-in-toi-meme avec l'aide de $SERVER['referer'] wink.gif

c'est mieux, j'ai telecharge un script tout fait, cela prend 5 min a installer : cherche script php referers, dans GG
-ZN-
Certains hebergeurs proposent des solutions intregrees a leur package hebergement, ses solutions lisent tes fichiers logs et te generent de jolis camemberts wink.gif
Un exemple de logiciel utilise par les hebergeurs est webtrends ... tu dois meme peut etre pouvoir l'utiliser si tu as acces a tes fichiers logs.
Cleden
A mon avis, ce qu'elle cherche c'est le moyen de comptabiliser les visiteurs que lui apportent les sites qu'elle a sur sa page de lien, en vue d'un classement par exemple.

Je lui ai envoyé un script maison mais c'est vrai qu'il n'est pas terrible, je découpe $HTTP_REFERER dans un tableau et compare ensuite les valeurs de ce tableau à des urls présentes dans un base de données. Si quelqu'un a quelque chose de plus propre, je suis également preneur.(Même si ce que j'ai fait fonctionne correctement)

Sinon, il y a toujours la solution de demander un lien avec variable type -index.php?id=xx mais au niveau de la transmission du PR, il y a mieux.

Loïc.
Anonymus
Bonjour,

on pourrait imaginer un script qui le fasse pour tous ceux qui en ont besoin, et ceci, sans tag visible.

Si vous êtes intéressés, et si vous avez des idées de ce que vous voulez, signalez le ici, on verra ce qu'on peut récupérer comme informations.

Il n'est pas dit que je me mette à en faire un, si le nombre de réponses est élevé wink.gif

Anonymus.
Berberber
CITATION(Anonymus @ vendredi 23 avril 2004, 18:21)
Bonjour,

on pourrait imaginer un script qui le fasse pour tous ceux qui en ont besoin, et ceci, sans tag visible.

Si vous êtes intéressés, et si vous avez des idées de ce que vous voulez, signalez le ici, on verra ce qu'on peut récupérer comme informations.

Il n'est pas dit que je me mette à en faire un, si le nombre de réponses est  élevé wink.gif

Anonymus.

il y en a deja, regardes sur hotscripts, ce serai pour rien... a moins que ce soit pour faire mieux
Gribouille26
Merci tout le monde de toutes ces réponses! :up:

Silmaril: je prefererai un script maison comme le dit Ldo

Berberber: j'ai chercher. C'est lequel que tu as pris, tu te souviens du nom?

-ZN-: je voudrais un truc qui me suit si je change d'hebergment, donc un script maison, c'est bien! Hotscripts est anglais.... sad.gif

Cleden: merci, mais je débute en php, et je connais pas cette affaire de découpe $HTTP_REFERER ... blink.gif
Berberber
topreferers,
je ne te le conseille pas...parceque j'ai du le bidouiller
mais cela me suffit,
Gribouille26
Je vais essayer RedKernel.
Sauf si quelqu'un à quelque chose de mieux à me proposer!
Gribouille26
Oula la!!! blink.gif

Y'a plein de fichiers!!! wacko.gif

Avec Cleden, ça avait l'air plus simple, mais je ne sais pas quoi faire avec le code qu'il m'a donné!

CITATION
$tab = parse_url($HTTP_REFERER);/// on découpe l'url de provenance dans un tableau
$referant = "http://".$tab["host"];/// on en sort le nom de domaine
list($rien,$dossier,$dossier1,$gid,$gecos,$home,$shell) = explode("/",$tab["path"]);
$referant1 = "http://".$tab["host"]."/".$dossier;/// on en sort le nom de domaine + un niveau d'arborescence
$referant2 = "http://".$tab["host"]."/".$dossier."/".$dossier1; /// idem + deux niveaux

$requete = mysql_query("select * from liens where url_site='$referant2'");/// je vérifie en enlevent deux niveau d'arborescence
$result = mysql_num_rows($requete);
if ($result != 0)
{
$sql2 = "UPDATE liens SET clics_entrants = clics_entrants +1 WHERE url_site= '$referant2'";
mysql_query($sql2, $db);
}
else
{
$requete = mysql_query("select * from liens where url_site='$referant1'");/// je vérifie en enlevant 1 niveau d'arborescence
$result = mysql_num_rows($requete);
if ($result != 0)
{
$sql2 = "UPDATE liens SET clics_entrants = clics_entrants +1 WHERE url_site= '$referant1'";
mysql_query($sql2, $db);
}
else
{
$sql2 = "UPDATE liens SET clics_entrants = clics_entrants +1 WHERE url_site= '$referant'";
mysql_query($sql2, $db);
}


Vous pouvez m'aider dans mon chemin de croix du php? unsure.gif
Ca serai sympa.
Merci
Berberber
avec topreferers un seul fichier...
Gribouille26
Oui, mais tu ne me le conseille pas! unsure.gif
Dan
Salut Gribouille,

Quelques lignes de code php dans chaque page permettent de savoir qui est venu et d'où ... sans base de données ni installation.
Ce code php ajoute lors de chaque visite une ligne dans un fichier texte, dans laquelle tu auras la date, l'adresse IP du visiteur, le USER_AGENT (navigateur) et le référant (s'il y en a un)
CODE
<?php
$date = date("d/m/Y \à G.i:s", time());

$fp=fopen("visiteurs.txt","a");  
fwrite($fp, "Visité le $date par $REMOTE_ADDR avec $HTTP_USER_AGENT de $HTTP_REFERER\n");                              
fclose($fp);
?>

Pour tester cela, faut que les pages dans lesquelles tu rajoutes ce code soient nommées en .php.
Le fichier créé sera nommé "visiteurs.txt" wink.gif

Dan
pitidev
tatatatata !

ne prenons pas de mauvaises habitudes ! n'oubliez pas que les variables globales sont a OFF (si elles ne le sont pas, faites comme si!)

CODE
<?php
$date = date("d/m/Y \à G.i:s", time());

$fp=fopen("visiteurs.txt","a");  
fwrite($fp, "Visité le $date par $_SERVER['REMOTE_ADDR'] avec $_SERVER['HTTP_USER_AGENT'] de $_SERVER['HTTP_REFERER']\n");                              
fclose($fp);
?>


sinon en voila 1 que j'utilise sur ma page mangeur de cigogne

Les Référants v1.0 par Laurent Adda
Gribouille26
Salut pitidev biggrin.gif

Ca veut dire quoi ça r_question6161.gif
CITATION
les variables globales sont a OFF
pitidev
suis ce lien sur phpteam pour en savoir plus
Gribouille26
Mais ça marche avec le code de Dan!!!!

Je comprend pas trop! sad.gif
pitidev
ca marche parce que tu as les variables globale sur ON
mais pour des raisons de securité (qui c'est vrai sont difficile a comprendre pour les debutants), il est preconisé de parametrer les variables globales à OFF.

cela dit, je pense que le post derive, donc si ca marche chez ton hebergeur avec le code de Dan, commence comme ca, tu te preoccuperas d'optimiser ton code plus tard !
Gribouille26
J'ai déjà mit le code de Dan, et il marche très bien!

Mais je voudrais bien savoir pour ces problèmes de securité.... biggrin.gif
pitidev
bon alors si le sujet t'interesse mais que le premier lien sur phpteam n'etait pas satisfaisant (ni les liens sur la derniere page de l'article de phpteam)
peut etre que tu trouvera ton bonheur sur phpdebutant
Anonymus
Lorsque l'on dit que les variables globales sont à ON, cela signifie que :

Un certain nombre de variables sont disponibles, sans avoir besoin de les déclarer. En général, ce sont des variables dont a besoin php pour tourner. Elles sont visibles lorsque tu fais la fonction : phpinfo();.
Donc, une option de configuration permet de rendre visible un certain nombre de variables.
Ainsi :
Si, dans ton fichier php.ini, l'option de configuration error_reporting est à E_ALL, tu demandes à php de déclarer toutes les erreurs.
Si tu le mets à E_ERROR, alors php ne déclarera pas les erreurs qu'il rencontrera.
Donc :
A supposer que tu demandes à php de déclarer toutes les erreurs, tu peux essayer de faire juste ce petit code :
CODE
<?
echo $a;
?>

Normalement, cela va te renvoyer une erreur, disant que $a n'est pas déclaré. En effet, tu demandes à php d'afficher une variable qu'il ne connait pas.

Mais :
Tu peux demander à php d'afficher des variables qu'il connait, même si tu ne les as pas déclaré. Ce sont les variables globales. Par exemple ?

Essaie de faire :
CODE
<?
echo getenv("SERVER_NAME");
?>


Tu auras le nom du serveur qui tourne sur ta machine. Normalement, c'est 'localhost'.
Cette variable, php a besoin de la connaitre, meme si tu ne la déclare pas.

Si tu fais :
CODE
<?
echo $a;
?>

le navigateur te dira :
CODE
Notice: Undefined variable: a in ton_fichier.php on line ligne

Autrement dit, il te retournera une erreur.

Imagines un script que tu trouves sur internet, ou dont tu postes le code, inocemment, dans un forum. Les personnes qui voient ce script peuvent être tentés d'essayer d'entrer dans ton code en utilisant les variables que tu ne testes pas. Exemple :
CODE
if (auth='admin'){
// gestion de l'administration
}


Là, il suffit de faire :
CODE
http://localhost/mon_script.php?auth=admin

pour entrer dans le code.
Et ca marchera... si ton script est réglé sur register_globals = on
par contre, s'il est réglé sur register_globals = off ca ne marchera pas.

Jettes un oeil au fichier php.ini, dans le répertoires windows, tu trouveras tout un tas d'options de configuration bien utiles à connaitre (mais attention, les manipulations peuvent être... dangereuses).

Si tu as besoin de plus d'infos, n'hésites pas wink.gif

Anonymus.
Gribouille26
Merci. :up:

Mais effectivement, j'aurrai besoin de plus d'info! tongue.gif

J'ai compris le principe, mais pas le fichier.ini!
Quand je fais le premier test:
CODE
<?
echo $a;
?>

Je n'ai pas d'erreur. Donc, les variables globales sont à ON.

Mais je ne comprend pas comment changer ça?
Et en plus tu me fais peur en me disant que ça peut être dangereux! sad.gif
Dan
CITATION(pitidev @ samedi 24 avril 2004, 19:21)
ca marche parce que tu as les variables globale sur ON
mais pour des raisons de securité (qui c'est vrai sont difficile a comprendre pour les debutants), il est preconisé de parametrer les variables globales à OFF.

cela dit, je pense que le post derive, donc si ca marche chez ton hebergeur avec le code de Dan, commence comme ca, tu te preoccuperas d'optimiser ton code plus tard !

Salut a tous,

Gribouille n'est pas sur serveur dédié, et son hébergeur a choisi de laisser les variables globales à "On". Inutile donc de lui rendre la vie compliquée B)

Il est vrai que c'est préférable de les positionner à "Off" , je le sais bien, mais je n'ai pas jugé utile de rendre le petit code plus compliqué à comprendre, surtout pour une débutante.

Donc j'ai délibérément fait abstraction de ces variables globales, la sécurité du script ne pouvant pas être mise en doute dans ce cas... il ne prend absolument aucun paramètre wink.gif


Inutile donc de lui faire peur... je le répète pour Gribouille: "Dans ce script exemple, il n'y a AUCUN risque" wink.gif

Si tu veux que ton script continue à fonctionner même si ton hébergeur décide de mettre les variables globales à "Off"... voici le script modifié, comme il a déjà été donné par pitidev:
CODE
<?php
$date = date("d/m/Y \à G.i:s", time());

$fp=fopen("visiteurs.txt","a");  
fwrite($fp, "Visité le $date par $_SERVER['REMOTE_ADDR'] avec $_SERVER['HTTP_USER_AGENT'] de $_SERVER['HTTP_REFERER']\n");                              
fclose($fp);
?>

Ce code fonctionnera, que les variables globales soient à "On" ou à "Off" B)

Dan
Gribouille26
Alors si je comprend bien, dans mon cas, ce n'est pas moi qui gere ce fichier.ini. C'est Free. biggrin.gif

De toute façon, il n'y a aucun risque avec un piti code tel que celui que tu m'as donné, Dan! ?
Je change quand meme mon code par le dernier que tu m'as redonner au cas ou Free déciderai de mettre les variables sur off sans que je m'en rende compte! C'est ça?

J'ai aussi ,sur un site hebergé chez Free, un forum en php.
Là, ça peut être dangereux?

Vraiment merci a tous! p_flower01.gif p_flower01.gif p_flower01.gif
Vous m'avez fait progresser à une visitesse grand V ces derniers temps!
Je ne sais pas où j'en serai sans vos explications attentionnées.... :yoot:
Dan
Gribouille26,

Je l'ai dit et le répète: aucun danger!

En ce qui concerne le forum que tu utilises, tu ne peux pas faire grand chose, si ce n'est d'en mettre la version à jour à chaque fois qu'ils sortent un patch de sécurité.
Il ne faut pas non plus devenir parano wink.gif

Dan
Gribouille26
D'accord doc,
je calme ma parano sur internet, et je vais changer les codes au cas où Free change. dry.gif

En tout cas, ça marche très bien! :up:
Des fois, je n'ai pas d'adresse de référents. Ce sont les gens qui tapent directement l'adresse? blink.gif
Dan
CITATION(Gribouille26 @ dimanche 25 avril 2004, 11:53)
Des fois, je n'ai pas d'adresse de référents. Ce sont les gens qui tapent directement l'adresse?  blink.gif

Cela dépend.... il se peut que le visiteur entre l'adresse, ou simplement que le navigateur utilisé masque le référant. Tu auras donc des pages sans référant.

Il est possible de ne pas écrire ses pages en ajoutant un simple test, mais dans ce cas tu ne verras pas le passage des robots car ils n'ont jamais de référant wink.gif

Dan
Gribouille26
Je vais laisser comme ça. wink.gif
C'était juste pour savoir...

Encore merci Dan
Bonne journée thumbup.gif
pitidev
CITATION(Dan @ dimanche 25 avril 2004, 10:27)
Inutile donc de lui faire peur... je le répète pour Gribouille: "Dans ce script exemple, il n'y a AUCUN risque" wink.gif

Si tu veux que ton script continue à fonctionner même si ton hébergeur décide de mettre les variables globales à "Off"... voici le script modifié, comme il a déjà été donné par pitidev:
CODE
<?php
$date = date("d/m/Y \à G.i:s", time());

$fp=fopen("visiteurs.txt","a");  
fwrite($fp, "Visité le $date par $_SERVER['REMOTE_ADDR'] avec $_SERVER['HTTP_USER_AGENT'] de $_SERVER['HTTP_REFERER']\n");                              
fclose($fp);
?>

Ce code fonctionnera, que les variables globales soient à "On" ou à "Off" B)

Dan

en fait , au depart, je ne voulais pas du tout faire peur... mais comme gribouille debute, je voulais juste signaler qu'elle prendre des mauvaises habitudes...
le plus gros probleme qui peux lui arriver c'est que son site prends beaucoup d'importance et que l'hebergeur free ne la satisfait plus...
si elle demenage chez un autre hebergeur qui par malchance (ou plutot par chance non?) a les variables globales a OFF et bien elle aura un enorme travaille de mise en conformité ...
a l'heure actuelle, le plus gros danger c'est pas réellement la sécurité mais plutot si l'hebergeur change le parametrage sans que l'on puisse y faire qq chose...
(vive les fichier .htaccess qd meme wink.gif )

conclusion : prendre les bonnes habitudes des le depart et hop pas de mauvaises surprises plus tard ... et c'est pas pour faire peur que je dis ca, mais c'est comme le principe de respecter les standarts. Autant suivre les preconisations pour ne pas avoir a faire de rattrapage plus tard
Gribouille26
Merci Pitidev,

Même si c'est vrai que tu m'as un peu affolée quelques instants, je te rassure, ça va! tongue.gif
J'ai choisit ton code. Au cas où... wink.gif

Je pense rester encore un peu chez Free, mais dès que j'ai un peu de temps, je me lancerai dans ces histoires de fichiers ini, d'accès aux fichiers, et de sécurité.
Je reviendrai alors surement vous voir.... whistling.gif
bigornot
moi, pour le voir, je ferais en sorte que chaque lien aboutirai à une page ( ex :<a href="nomdusit.fr/enregistrement.php?nomsite=$nomsite&numerolien=$numlien&ip=$ip">lien</a> )
encore faut ensuite, dans la page : on met un $req="SELECT nomsite WHERE $nomsite=/"nomsite"/ AND $numlien=/"numlien"/ ";puis, un $res=mysql_numrows(mysql_query($req);
if($res="0"){
INSERT INTO nomdetatable(nomsite,numlien) VALUES ('$nomsite','$numlien','$ip')
}
else
{
$req2="SELECT nbrclic WHERE $nomsite=/"nomsite"/ AND $numlien=/"numlien"/ ";puis, un $res2=mysql_numrows
$resnew=1+$res2;
ALTER TABLE blabla(numlien,nomsite,ip,nbrclic) WHERE $nomsite=/"nomsite"/ AND $numlien=/"numerolien"/ VALUES ('$numlien','$nomsite','$ip','$resnew')
}
header("Location: lien.html");

etc ...
j'ai fait des fautes (je suis debutant) corrigez les svp ...
enfin, c'était pour l'idée !


//edit
rhaaaa !!!
excusez moi !
j'ai cru que la question était comment savoir combien de fois un lien a il ete utilisé !
Modibo
CITATION(Dan @ vendredi 23 avril 2004, 19h40)
Salut Gribouille,

Quelques lignes de code php dans chaque page permettent de savoir qui est venu et d'où ... sans base de données ni installation.
Ce code php ajoute lors de chaque visite une ligne dans un fichier texte, dans laquelle tu auras la date, l'adresse IP du visiteur, le USER_AGENT (navigateur) et le référant (s'il y en a un)
CODE
<?php
$date = date("d/m/Y \à G.i:s", time());

$fp=fopen("visiteurs.txt","a");  
fwrite($fp, "Visité le $date par $REMOTE_ADDR avec $HTTP_USER_AGENT de $HTTP_REFERER\n");                              
fclose($fp);
?>

Pour tester cela, faut que les pages dans lesquelles tu rajoutes ce code soient nommées en .php.
Le fichier créé sera nommé "visiteurs.txt" wink.gif

Dan
*

Bonjour.....Avril 2004...donc tout d'bord "vive la Recherche" wink.gif
Quand tu dis "dans chaque page", ça se passe comment pour un Forum IPB ?
Je peux le mettre dans le Footer ? car là c'est visible sur toutes les pages du Forum..



En fait moi j'ai besoin d'effectuer un Classement pour mes Partenaires (y'en a bcp, donc c'est un moyen de diminuer et alléger mon Footer) afin de savoir celui qui m'a ramené le plus de visites...
Merci
lupucide
Allez, remonte petit thread ^_^

J'ai coder un petit truc aujourd'hui pour avoir un aperçu des visites effectués sur un de mes sites. Je me permet de faire mon annonce car je recherche des personnes désirant tester leurs référants et passage de bots.

Il faut juste uploadé le dossier et y accéder pour créer son compte puis placer un include() sur ses pages à surveiller. Mon code n'étant pas parfait, je voudrais avoir des rapports sur l'efficacité, afin de déterminer si je suis sur une bonne base.
Le script n'utilise pas MySQL, les donnée sont stockées dans des fichiers texte (un par jour).
Petite fantaisie, une vérification est faite sur l'IP et le referer pour les transformer en lien avant l'enregistrement.

Si vous êtes intéressés, faite part des bugs rencontrés sur ce thread ou sur mon blog. Si vous avez des idées sur des fonctions à intégrées je suis aussi preneur.

Télécharger Spydmy (un zip très léger)

<edit>
Argh, une grosse erreur dans le code ! Testez et si vous trouvez une solution je vous paye un verre smile.gif
</edit>
Modibo
Merci pour ce système
Petit question: Pour un Forum IPB...
Je dois mettre ça dans ma page index.php je pense...
CODE
<?php
if (!isset($_COOKIE['spydmy'])) {
    include('../spydmy/spy.php');
}
?>

Ca provoque une erreur et le site ne peut pas s'afficher whistling.gif
lupucide
Tente avec ça :

CODE
<?php
if (!isset($_COOKIE['spydmy'])) {
include($_SERVER['SERVER_NAME'].'/spydmy/spy.php');
}
?>
Modibo
Idem...
CODE
Parse error: parse error, unexpected '<' in /home.2/soccers/www/index.php on line 708


C'est pas à cause des "<?php" et "?>" autour de ton code ???
car il y'a de même qui entoure déjà la page index.php
lupucide
Ca dépend où tu place le code. Si tu le case là où se trouve déjà du PHP tu peut virer les balises <?php et ?>.
Modibo
OK ca marche
Attendons de voir les visites, réponse demain
Merci...

Edit:
CODE
Statistiques du 14/05/05 pour [B][I]60gp.ovh.net[/I][/B]

Ca c'est l'hébergeur...mon site c'est www..... whistling.gif
Eclipsis
Une petite question, un peu off-topic...
J'ai vu que le 5ème post de ce sujet avait été fait par "Ldo", avec comme indication "Non enregistré"... Qu'est-ce que c'est que ça? On peut poster sans être enregistré maintenant?? C'est un bug? Mes yeux? blink.gif
lupucide
Modibo => désolé, $_SERVER["SERVER_NAME"] fonctionne avec localhost et chez Free :/
Je vais chercher autre chose pour afficher le NDD.
Modibo
no problem smile.gif
lupucide
Dans le fichier spy.php.

Ligne 14 à remplacer par :
CODE
$ip = '<li>IP : '.$_SERVER['REMOTE_ADDR'].'</li>'." \n";


Ligne 42, il peut être utile de préçiser un chemin correct vers le fichier texte à lire et écrire.
Modibo
l42
CODE
$file = './'.$day.'.txt';

mettre quel fichier ?


Sinon par curiosité g parcouru avec le navigateur le fichier spy.php et:
CODE
Warning: fsockopen(): unable to connect to 83.214.69.45:80 in /home.2/soccers/www/spydmy/spy.php on line 10



edit:
en retournant voir ça m'a donné un résultat (c moi je crois tongue.gif )
CODE
05:13

   * User Agent : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.8) Gecko/20050511 Firefox/1.0.4
   * Page vue : 60gp.ovh.net/~soccers/spydmy/spy.php
   * Référenceur : aucun
lupucide
Euh... évite de donner ton IP comme ça huh.gif

Je vais supprimer fsockopen() et afficher simplement l'IP. Je prépare un zip pour ce soir.
Modibo
I'm waiting for it smile.gif
Dudu
CITATION(Eclipsis @ samedi 14 mai 2005, 03h47)
Une petite question, un peu off-topic...
J'ai vu que le 5ème post de ce sujet avait été fait par "Ldo", avec comme indication "Non enregistré"... Qu'est-ce que c'est que ça? On peut poster sans être enregistré maintenant?? C'est un bug? Mes yeux?  blink.gif
*
C'est le cas typique d'un utilisateur enregistré qui a ensuite demandé à un admin la suppression de son compte wink.gif

Je suis sûr qu'avec la recherche on trouverait des citations de lui faites par d'autres membres en cherchant son pseudo dans le champ "mot-clé" (les "quote=machin" sont référencés).
Le problème est que son pseudo fait 3 lettres donc le moteur de recherche ne veut rien savoir.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.