1 accès pour 24 heure en php

Résolu
shadow125 Messages postés 50 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 3 octobre 2008 - 9 avril 2006 à 12:09
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 9 avril 2006 à 18:45
Bonjour,

Voici mon problème : J'ai fait un petit script pour enregistrer les points de mes membres qui correspondent aux jours de visites ( 3 jours de visites = 30 points )
Mais voila, mon code ajoutera 10 points a chaque visite du site, hors je veux que lorsqu'on l'a visité 1 fois pour la journée, le compteur n'augmente pas.
Mes points sont dans des fichiers textes donc je pense qu'il faut utiliser des conditions sur les valeurs du fichier txt ...
Voici mon code actuel :

<?php
$fichier = "$pseudo.txt";
$fp = file($fichier);
$points = $fp[0] + 10;
$nouveau = fopen($fichier,'w+');
fwrite( $nouveau, $points."\n" );
fclose($nouveau);
?>

Petite explain : $pseudo est la valeur lorsque le membre se logue .

J'ai trouvé un code de sondage qui lui restreint l'accès ! Je vous met la partie du code qui me parait être la clé du problème :
<?
// INFORMATIONS SUR LE SONDAGE $titre 'sondage'; // nom du fichier dans lequel est stocké les votes
$question = 'Qui voulez vous voir gagner ?';
$reponse[1] = 'Kaiba';
$reponse[2] = 'Mokuba';
$nb_max_votes = 1; // 0 si illimité
// MODIFICATION DU SONDAGE
$choix = count($reponse);
if (isset($_GET['vote']))
{
$resultats = fopen("$titre.txt", "r+");
$vote = $_GET['vote'];
for ($numero = 1; $numero <= $choix; $numero ++)
{
$ligne[$numero] = (int) fgets($resultats);
if ($numero == $vote)
{
$ligne[$numero] ++;
}
if (isset($donnees_votes))
{
$donnees_votes = $donnees_votes . "\n" . $ligne[$numero];
$nb_votes += $ligne[$numero]; // comptage du nombre de votes
}
else
{
$donnees_votes = $ligne[$numero];
$nb_votes = (int) $ligne[$numero];
}
}
fseek ($resultats, 0);
if($nb_votes<=$nb_max_votes OR $nb_max_votes==0)
fputs ($resultats, $donnees_votes); // écriture des données

fclose($resultats);
} // la partie de lecture a été coupée volontairement

Merci de prendre 5 minutes pour m'expliquer comment faire :)

Cordialement, Shadow125

3 réponses

Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
9 avril 2006 à 13:28
Salut,
utilise des cookies.

genre :

if(empty($_COOKIE["visite"])){
setcookie('visite', 'ok', time()+1*24*3600); // le cookie expire après 1 jour
+TON CODE QUI AJOUTE 10 POINTS
}
else {
+le code à exécuter si le lvisiteur est déjà venu
}
3
shadow125 Messages postés 50 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 3 octobre 2008
9 avril 2006 à 13:42
Merci, cela fonctionne nickel :)
Shadow125
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
9 avril 2006 à 18:45
Salut,

si tu as un fichier texte pour chaque membre, utilise plutôt le filemtime() qui correspond à la date de dernière modification du fichier. Tu la compares avec time() (en fait faut transformer les dates ou non pour savoir si le jour est le même). En fonction de ça tu ajoutes ou non les points.

a +

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Rejoignez-nous