pas plus d'un clic toutes les 24 heures

Répondre
raphlight
le 15/08/2007 à 18:43
raphlight
cool !
merci beaucoup pour ton aide, amery ;)
mais que se passe-t-il à ce moment là de ton code ? :
  1. $strquery = sprintf("SELECT*FROM $tableUrl WHERE url='$mon_url'AND host='$server'AND time>'$temps'");
  2. $query = mysql_query($strquery) or die('Erreur SQL !<br />'.$strquery.'<br />'.mysql_error());
  3. if(mysql_num_rows($query)>0)


Tu prélèves l'url surlaquelle il faut cliquer actuellement ? l'url du membre qui clique ?

En tout cas, je ne te l'ai pas dit mais l'url est divisée en 2 parties toutes 2 dans la base mysql :

http://le-pseudo-du-membre.miniville.fr/trois-lettres-définies-par-le-membre-en-question
http://raphlight.free.fr/trad.php
raphlight
le 15/08/2007 à 18:44
raphlight
donc faudras changer un ptit peu mais déjà, je voudrais etre sur que tu preleves l'url actuelle ;-)
http://raphlight.free.fr/trad.php
Amery
le 17/08/2007 à 16:08
Amery
L'url enregistrée dans la table est celle qui se trouve dans la variable $mon_url (que tu peux récupérer à partir de ton fichier texte, par exemple).

Donc, la requête...

  1. <?php
  2. $strquery = sprintf("SELECT * FROM $tableUrl WHERE url='$mon_url' AND host='$server' AND time>'$temps'");
  3. ?>


...regarde s'il existe un enregistrement avec l'adresse ip du visiteur durant les 24 dernières heures et l'url $mon_url.

PS: il manque un header à la fin dans le code pour le fichier click.php

  1. <?php
  2. $url = mysql_real_escape_string($_GET['url']);
  3. $strquery = sprintf("INSERT INTO $tableUrl VALUES('','%s','$unix','$server')",$url);
  4. mysql_query($strquery) or die('Erreur SQL !<br />'.$strquery.'<br />'.mysql_error());
  5. $echeance = 365*24*3600; // fin du cookie dans 365 jours
  6. // Envoi du cookie avec l'url
  7. setcookie ("url", $url, time() + $echeance);
  8. header("Location:$url");
  9. exit();
  10. ?>
raphlight
le 18/08/2007 à 20:27
raphlight
donc, il faut que je créé une table nommée tableUrl contenant un champ nommé mon_url. Mais je ne sais pas comment récupérer l'url à partir du fichier texte... je cherche de mon coté mais si tu sais comment faire, je veux bien le savoir :)

Sinon je pense que tout le reste fonctionnerait :D

Merci beaucoup.
http://raphlight.free.fr/trad.php
raphlight
le 18/08/2007 à 20:28
raphlight
Rectification : il me faut 3 champs dans la table tableUrl : url, host et time ? mais que met-je dans le champ host et time ?
http://raphlight.free.fr/trad.php
Amery
le 20/08/2007 à 08:22
Amery
Re,


Mais je ne sais pas comment récupérer l'url à partir du fichier texte...


Va voir de ce côté : http://www.phpdebutant.org/article58.php


Rectification : il me faut 3 champs dans la table tableUrl : url, host et time ? mais que met-je dans le champ host et time ?


Oui, il te faut 3 champs :
- Url: tu enregistres l'url sur laquelle le visiteur vient juste de cliquer
- host : c'est l'adresse IP du visiteur
- time : c'est la date et l'heure en timestamp Unix du clic.
raphlight
le 20/08/2007 à 14:43
raphlight
Voilà le script de ma page de traitement :

  1. <?php

  2. $fp = fopen("lien.txt","r"); //(1)
  3. $mon_url = fgets($fp,30); //(2)
  4. fclose($fp); //(3)
  5. if (isset($_COOKIE['url']) && $_COOKIE['url']==$mon_url)
  6. {// Si cookie identifié, alors on affiche le texte suivant
  7. $texte = "vous avez deja visité ce lien aujourd'hui.";
  8. }
  9. else
  10. {
  11. $unix = time(); // temps actuel.
  12. $temps = time()-(3600*24); // le temps il y a maintenant 24 heures.

  13. // Récupération de l'adresse IP du visiteur
  14. // On vérifie si le visiteur est caché derrière un proxy
  15. // Si oui, on récupère l'adresse IP d'origine
  16. if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
  17. {
  18. $server = $_SERVER['HTTP_X_FORWARDED_FOR'];
  19. }
  20. elseif(isset($_SERVER['HTTP_CLIENT_IP']))
  21. {
  22. $server = $_SERVER['HTTP_CLIENT_IP'];
  23. }
  24. else
  25. {
  26. $server = $_SERVER['REMOTE_ADDR'];
  27. }

  28. mysql_connect ('******', '******', '******');
  29. mysql_select_db($dbname);

  30. // On vérifie s'il n'y a pas déjà un clic enregistré avec la même url et
  31. // le même proxy durant les dernières 24 heures
  32. $strquery = sprintf("SELECT * FROM tableUrl WHERE url='$mon_url'AND host='$server'AND time>'$temps'");
  33. $query = mysql_query($strquery) or die('Erreur SQL !<br />'.$strquery.'<br />'.mysql_error());
  34. if(mysql_num_rows($query)>0)
  35. {// Si oui, on affiche le texte suivant
  36. $texte = "vous avez deja visité ce lien aujourd'hui.";
  37. }
  38. else
  39. {//Sinon, on affiche le lien
  40. $texte = 'Cliquer ici : <a href="click.php?url=$monurl">$mon_url</a>';
  41. }
  42. }
  43. mysql_close();
  44. ?>


Euh... j'ai du faire une betise car lorsque je vais sur vette page de traitement, rien ne s'affiche.

Qu'est ce qui ne va pas ? :(
http://raphlight.free.fr/trad.php
raphlight
le 20/08/2007 à 14:52
raphlight
si ca peut aider, voici une capture d'écran de ma table, peu être que le problème vient d'elle :

Cliquer ici
http://raphlight.free.fr/trad.php
Amery
le 20/08/2007 à 15:02
Amery
Rere,

normal, tu n'affiches pas la variable $texte avec un echo ou print()...

A toi de mettre un "echo $texte;" à l'endroit où tu veux afficher le texte.
Répondre
LoadingChargement en cours