capping
bonjour
je voudrai mettre un capping sur une bannière pour qu un visiteur ne sois compté qu une fois tte les 24 heures mais je ne sais pas comment faire quelqu un peut il m aider?
merci d avance
alors, le moyen le plus simple, c'est de lui coller un cookie. C'est l'un des moyen le plus simple de le 'tracer' pendant une durée determinée.
Mais s'il n'accepte pas les cookies, ou qu'il les efface, bah ca marcheras pas.
L'autre solution, c'est de stocker son ip, et de verifier a chaque fois qu'il quand il clique, si ca fait 24h ou non.
Mais la encore, s'il change d'ip, dans la journée, ca marche moyen ^^.
Mais c'est ce qui se rapproche le plus d'un visiteur unique ^^.
Ou bien tu fous les deux :D
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
merci
pour stocker l ip ca je sais le faire :o)
pour stocker la date et l heure ossi:o)
pour comparer deux date et heure la par contre je coince.
comment fait on?
est ce possible de faire en sorte que la ligne de la table s efface automatiquement au bout de 24 heure?
merci
Pour tes dates, tu peux les transformer en timestamp avec
mktime, faire leur différence, puis tu compares cette différence avec 86 400 secondes (24 heures).
aaaaaaaaaaaaaaaaaaaaaarf
j ai lu le manuel mktime mais j'y comprends absolument rien!!!!!
je suis trop nul je sais :o(
echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1997));
si j ecris ca les chiffres 0, 0, 0, 12, 32, 1997 corresponde a quoi?
et comment effacer la ligne automatiquement au bout de 86 400 secondes?
merci
je suis chiant je sais excuse moa
Pour mktime, voici ce que dis la doc :
int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]])
mktime() retourne un timestamp UNIX correspondant aux arguments fournis. Ce timestamp est un entier long, contenant le nombre de secondes entre le début de l'époque UNIX (1er Janvier 1970 00:00:00 GMT) et le temps spécifié.
Exemple :
<?php
$tps = mktime(0, 0, 0, 1, 13, 1997);
?>
$tps contient donc le nombre de secondes écoulées entre le 1 er janvier 1970 à 0h0mn0s et le 13 janvier 1997 à 0h0mn0s.
Pour effacer automatiquement ta ligne, il suffit de faire le test que je t'ai dit : comparer le timestamp des deux dates et si il est supérieur à 24 heures, ben tu effaces.
voici le code que j ai mis
<?php
$date = date ("d,m,Y");
$heure = date ("H:i");
$tps = mktime(0, 0, 0, 1, $date );
$cap = 'SELECT code FROM membre WHERE ip="'.$_SERVER['REMOTE_ADDR'].'"';
$capi = mysql_query($cap) or die('Erreur SQL !'.$cap.''.mysql_error());
$caping = mysql_fetch_array($capi);
$dernier= $tps - $caping['tps'];
if ($dernier > 86 400)
{
$new = 'INSERT INTO caping VALUES( "'.addslashes($tps).'","'.$_SERVER['REMOTE_ADDR'].'")';
mysql_query($new) or die('Erreur SQL !'.$new.''.mysql_error());
//incrementation du compteur
}
mysql_close ();
?>
Mais ca ne fonctionne pas :o(
normal, il faut que tu explode ta date ^^
sinon ca pourras pas marcher ^^
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
Oui, tu as foiré ton mktime (mktime attend des chiffres en paramètres et non une chaine de caractères).
De plus, tu ne selectionnes pas de champs tps dans ta requete SQL alors que tu utilises $caping['tps'].
Il manque aussi la suppression des anciennes entrées dans la table :/
Bref, on va faire un code exemple, sinon on ve pas s'en sortir
<?php
// imaginons que tu stockes l'ip du visiteur ainsi que la date où il charge cette page.
// pour cette date, on utilisera un champ SQL de type INT
// format de la table : table (id, ip, date)
// on calcul la date actuelle et celle d'hier
$tps_actuel = time();
$tps_hier = $tps_actuel - 86400;
// on supprime les anciennes entrées
$sql = 'DELETE FROM table WHERE date < "'.$tps_hier.'"';
mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
// on cherche si l'adresse ip a une entrée dans la base
$sql = 'SELECT count(id) AS is_ip FROM table WHERE ip="'.$_SERVER['REMOTE_ADDR'].'"';
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result($req);
if ($data['is_ip'] == 0) {
// si non, on anjoute une entrée dans la base
$sql = 'INSERT INTO table VALUES("", "'.$_SERVER['REMOTE_ADDR'].'", "'.$tps_actuel.'")';
mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
}
?>
Code non testé.
lol
c est du grec pour moi ca
qu est ce que ca veux dire????
je suis un debutant