edito
forum (21 051)
making of
preview newsletter
photoshop shortcuts
plan du site
bétisier (24)
nouveautés (67)
mises à jour
bannières (92)
liste de diffusion
infos légales
 


 

Devenez awares ! Et essayez de survivre.




aperçu
 

 

login | logout
gérez votre profil
devenez membre
membres (2138)
anniversaires (796)
awares (349)
mickeys (342)
notables (83)
modérateurs (9)
votre vie privée

 

 

amis (22)
gfx français (58)
gfx autres (383)
pixel art (67)
ascii art (0)
paint/draw (97)
communautés (27)
portails gfx (16)
ressources (36)
flash (253)
3D (38)
java (2)

proposez votre site
dernières entrées
aléatoire (999)
quicklist
top 10










































999 sites
409 035 hits
 
 

à propos des tutos
tous les tutos (48)
rechercher un tuto

tutos aléatoires
238 070 hits

 

 

screen fonts
brushes
softwares
 
 
 

 

stats publiques
infocentres
référents (1731)
refs quicklist (1731)
visiteurs uniques
awards

2 134 925 hits
 





uelques fois, vous pouvez être amenés à créer des compteurs particuliers ( voir tuto php - compteurs de visites ). Ces compteurs un peu plus évolués n'autorisent qu'une seule mise à jour de compteur : la première fois, le compteur est incrémenté, les suivantes il n'est plus modifié. Vous pouvez alors définir la durée pendant laquelle le compteur reste "insensible" : infinie dans le cas d'un vote ( un visiteur vote une seule fois ) ou 24 heures par exemple dans le cas de compteurs sur des sites externes ( le visiteur incrémente de 1 le compteur d'un site lors de son 1er clic, les suivants n'incrémenteront plus le compteur du site pendant les 24 prochaines heures ).


 

Prenons l'exemple sus-cité ( chaud à placer en diner un mot pareil ^^ ) d'une page de liens où un compteur doit être figé durant les 24 heures suivant un clic. Lors d'un clic, nous allons vérifier la présence d'un cookie donné. S'il n'y a pas de cookie, le compteur est incrémenté et on crée ledit cookie. Si le cookie existe, le compteur n'est pas incrémenté. Une sorte de cookie bloquant.

Le cookie a une durée de vie limitée à 24 heures. Passé ce délai, il se détruit sur le poste local et libère le compteur qui peut de nouveau être modifié.

Pour le cas d'un vote, c'est plus simple puisque le cookie a une durée de vie illimitée. Cela dit, il est plutôt recommandé alors de stocker cette information directement dans la base.

Pour la suite du tuto, je suppose que vous disposez d'une table liens contenant au moins 2 champs : l'URL du site et son COMPTEUR associé.


 

Ce traitement est fait par un fichier redirect.php qui à la fin, redirige le navigateur vers le site souhaité. L'adresse de ce site est passée en paramètre : href=redirect.php?url=http://www.site.com . Le script ressemble à ça :

<?
include ("../connexion_a_la_base.php"); // CONNEXION MYSQL
$link = @mysqli_connect ($host,$user,$password); // INITIALISATION DE LA CONNEXION
mysqli_select_db($link, $bdd);

if ($url!="") // SI L'URL EST NON NULLE
{
   // CHERCHE L'URL DANS LA TABLE
   $req1="SELECT * from liens where url='$url'";
   $res1=mysqli_query($link, $req1);
   $row1=mysql_fetch_object($res1);
   $trouve=@mysqli_num_rows(mysql_query($req1,$link));
   // TROUVE EGALE 1 SI L'URL A ETE TROUVEE DANS LA TABLE

   // VERIFIE SI LE COOKIE EST DEJA PRESENT
   if (!isset($clic[$url]) && $trouve!="")
   {
      // CREATION DU COOKIE BLOQUANT
      SetCookie("clic[".$url."]","1",time()+3600*24); // 24 HEURES
      // RECUPERATION DU COMPTEUR
      $compteur=$row1->compteur;
      $compteur++;
      // MISE A JOUR DU COMPTEUR DANS LA TABLE
      $req2="UPDATE liens SET compteur='$compteur' WHERE url='$url'";
      mysqli_query($link, $req2);
   }
   // REDIRECTION VERS L'URL
   mysql_free_result($res1);
   header("Location: ".$url);
}
?>


 

Le script de redirection est opérationnel. Il crée les cookies respectifs à chaque url et incrémente les compteurs s'il n'y a pas de cookies. Dans votre page de liens, il ne reste plus qu'à adapter vos liens pour qu'ils pointent vers votre fichier redirect.php :

<a href=redirect.php?url=http://www.graphinews.com target=_blank>graphinews</a>
graphinews

NB : ce script peut aussi se révéler très utile pour vous prémunir des risques de flood sur les parties dynamiques de votre site. A chaque nouveau commentaire par exemple, créez de la même manière un cookie à durée de vie très limitée ( 45 secondes ) qui empêchera d'insérer un autre commentaire durant ce laps de temps.

NB2 : Gardez enfin à l'esprit que si les cookies sont très pratiques, il n'en restent pas moins instables de par leur nature éphémère. Préférez toujours par exemple stocker dans la base directement le fait qu'une personne ait voté ou non parce qu'en supprimant ses cookies, elle aurait de nouveau la possibilité de voter. Les cookies ne sont donc pas redoutables d'efficacité. Simplement très pratiques

piregwan
2100 visites




 

o0o, 27 07 2002 à 07:48

c'est vriament trop redoutable ces tutoriaux php


o0o (roi du pixel f...)
46 ans (Limbo - ^^)
info@o0o.ch
http://www.o0o.ch


la bidouille, 10 07 2001 à 03:16

ce site vas me faire faire des bétises


la bidouille (membre)
c.gmehlin@pusherweb.com
http://www.pusherweb.co...


piregwan, 25 06 2001 à 11:19

aah ? lesquels par exemple ?


piregwan (agent mad fana...)
43 ans (chambéry, 73)
krakoukas@piregwan-genesis...
http://www.piregwan-gen...


Proskater, 25 06 2001 à 08:59

Oui mais ceci est valable pour tous les autres tutos du site!


Proskater


piregwan, 20 06 2001 à 12:31

salut ta remarque est légitime. cette technique était largement utilisée sur les liens externes de ce site, mais j'ai dû l'abandonner parce qu'elle générait beaucoup plus de cookies qu'il n'est possible d'en créer. cette technique sert idéalement à empecher un visiteur de cliquer plusieurs fois sur UNE ou QUELQUES pages mais ne se prête pas à la sécurisation de plusieurs CENTAINES de liens (max : 20 cookies par domaine). si tu cherches un moyen de protéger plusieurs liens, préfère stocker dans ta base l'adresse ip du cliqueur, c'est beaucoup plus efficace, plus rapide, plus sûr et tu pourras protéger une quasi-infinité de liens. a+


piregwan (agent mad fana...)
43 ans (chambéry, 73)
krakoukas@piregwan-genesis...
http://www.piregwan-gen...


Proskater, 20 06 2001 à 08:59

Salut, perso je trouve dommage que vous ne montrer pas le resultat car avec ces tutoriaux nous voyons le code mais po ce que ca va donner, c'est dommage!


Proskater


( 6 commentaires )
<< 1 2 3 4 5 6 7 8 9 10 11 12 >>

 











P I R E G W A N . C O M
interface & développement - piregwan 1998-2002




toutes les bannières


généré en 3.843 secondes