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 ? :
$strquery = sprintf("SELECT*FROM $tableUrl WHERE url='$mon_url'AND host='$server'AND time>'$temps'"); 
$query = mysql_query($strquery) or die('Erreur SQL !<br />'.$strquery.'<br />'.mysql_error());
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...

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


...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

<?php 
$url = mysql_real_escape_string($_GET['url']);
$strquery = sprintf("INSERT INTO $tableUrl VALUES('','%s','$unix','$server')",$url);
mysql_query($strquery) or die('Erreur SQL !<br />'.$strquery.'<br />'.mysql_error());
$echeance = 365*24*3600; // fin du cookie dans 365 jours
// Envoi du cookie avec l'url
setcookie ("url", $url, time() + $echeance);
header("Location:$url");
exit();
?>
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 :

<?php 

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

// Récupération de l'adresse IP du visiteur
// On vérifie si le visiteur est caché derrière un proxy
// Si oui, on récupère l'adresse IP d'origine
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$server = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
elseif(isset($_SERVER['HTTP_CLIENT_IP']))
{
$server = $_SERVER['HTTP_CLIENT_IP'];
}
else
{
$server = $_SERVER['REMOTE_ADDR'];
}

mysql_connect ('******', '******', '******');
mysql_select_db($dbname);

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


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