Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/08/2007, 12h11   #1
Membre régulier
 
Avatar de akara
 
Inscription : juin 2007
Messages : 299
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 299
Points : 81
Points : 81
Par défaut [Conception] créer une page : les plus consultées

Bonjour,
j'ai une page affichage.php où je liste tous les articles que j'ai dans la base de données et sur chaque article j'ai créé un lien qui mène sur fiche_article.php?id=$id où je mets en GET l'id de l'article pour pouvoir ensuite la récupérer sur fiche_artcle... dans la fiche_article j' ai créé un 'algo' pour
pouvoir incrémenter le nombre de visite, comme vous pouvez le constater ce n'est pas 'bien' car il peut y avoir des F5 à volonter, comment pourrais-je procéder pour éviter un mitraillage de F5 ? en passant par une page qui contient seulement l'algo d'incrémentation et ensuite un petit header(Location:fiche_article.php?id=$id) ? est-ce conseillé ??
comment pourrais-je faire aussi que quand l'internaute va sur fiche_article.php?id=115656 , le compteur s'incrémente mais que quand il reviendra sur fiche_article.php?id=115656 il n'y aura pa d'incrémentation ainsi de suite pour chaque article ?
__________________
Le no life répond "Counter Strike : Source"
Le geek répond "Cascading Style Sheets"
Ce n'est pas un hasard si deux choses vitales ont le même sigle
akara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2007, 13h05   #2
Membre actif
 
Homme
Développeur Web
Inscription : juillet 2007
Messages : 193
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2007
Messages : 193
Points : 189
Points : 189
Salut,

Je te propose 2 solutions :
- Tu crées une session sur le siite et tu trace où le mec est passé via la session, ainsi tu peux incrémenter qu'une fois tes compteurs.

-Tu récupère l'adresse IP du visiteurs avec le timestamp ce qui te permet d'identifier qui va où et donc via un timout que tu définis toi même d'incrémenter tes compteurs!
metfan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2007, 15h29   #3
Membre régulier
 
Avatar de akara
 
Inscription : juin 2007
Messages : 299
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 299
Points : 81
Points : 81
Merci et je me suis renseigné un peu plus sur les solutions que tu m'as proposé , qu'est ce que tu penses de ça ? j'ai vu ça dans un petit tuto...
On crée une table "connectes" avec seulement 2 champs :
ip : type VARCHAR, nous stockerons temporairement les adresses IP des visiteurs.
timestamp : type INT, nous stockerons le timestamp,
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
<?php
 
.....//connexion à la base
// -------
// ETAPE 1 : on vérifie si l'IP se trouve déjà dans la table
// Pour faire ça, on n'a qu'à compter le nombre d'entrées dont le champ "ip" est l'adresse ip du visiteur
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
$donnees = mysql_fetch_array($retour);
 
if ($donnees['nbre_entrees'] == 0) // L'ip ne se trouve pas dans la table, on va l'ajouter
{
    mysql_query('INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
 
   .........../// et ICI ON FAIT L'INCREMENTATION ! ??!
}
else // L'ip se trouve déjà dans la table, on met juste à jour le timestamp
{
    mysql_query('UPDATE connectes SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
}
 
// -------
// ETAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 5 minutes
 
// On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes
mysql_query('DELETE FROM connectes WHERE timestamp < ' . $timestamp_5min);
 
?>
tout bon comme ça ou ???

////////editer

y aurait-il pas un problème, genre il va sur la fiche_article.php?id=1596
et que ensuite il va sur fiche_article.php?id=6785, il n'y aura pas d'incrémentation car l'adresse IP est déja conservée.....comment donc pourrais-je faire ?

ta première solution est bonne aussi mais le problème c'est que j'ai beaucoup de page qui vont sur fiche_article.php donc je préfére ne pas y faire comme cela....
__________________
Le no life répond "Counter Strike : Source"
Le geek répond "Cascading Style Sheets"
Ce n'est pas un hasard si deux choses vitales ont le même sigle
akara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2007, 11h57   #4
Membre actif
 
Homme
Développeur Web
Inscription : juillet 2007
Messages : 193
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2007
Messages : 193
Points : 189
Points : 189
ça n'a pas l'aire mal ais je pense qu'il faudrait, dans ton cas, ajouter l'url de la page dans la bd.

Si tu as beaucoup de visiteur ta bd va être lourde. pense au champs VARCHAR pour faire des indexs dans les tables!
metfan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h10.


 
 
 
 
Partenaires

Hébergement Web