capping

Répondre
vengeur002
le 16/02/2005 à 09:38
vengeur002
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
keitarosan
le 16/02/2005 à 09:46
keitarosan
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 <<
vengeur002
le 16/02/2005 à 09:54
vengeur002
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
LA GLOBULE
le 16/02/2005 à 10:14
LA GLOBULE
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).
vengeur002
le 16/02/2005 à 10:32
vengeur002
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
LA GLOBULE
le 16/02/2005 à 10:48
LA GLOBULE
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.
vengeur002
le 16/02/2005 à 14:32
vengeur002
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(
keitarosan
le 16/02/2005 à 14:43
keitarosan
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 <<
LA GLOBULE
le 16/02/2005 à 14:53
LA GLOBULE
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 smiley

<?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é.
vengeur002
le 16/02/2005 à 14:53
vengeur002
lol

c est du grec pour moi ca

qu est ce que ca veux dire????
je suis un debutant
Répondre
LoadingChargement en cours