bonjour, je voudrais en php: prendre l'ip de la personne qui va sur la page index.php et la mettre dans une base de donnée ou dans un fichier texte puis éffacer cette ip 24h apres quelle ait été enregistrée.
merci d'avance
bonjour, je voudrais en php: prendre l'ip de la personne qui va sur la page index.php et la mettre dans une base de donnée ou dans un fichier texte puis éffacer cette ip 24h apres quelle ait été enregistrée.
merci d'avance
Quel est le problème?
Avant de poster : FAQ, tutos, rechercher, google, ... Après :
Merci
Ben
Et pour supprimer les ip qui ont plus que 24h tu ajoutes un champ avec l'heure à laquelle tu as insérer l'ip puis tu fais un include d'un script sur ton index.php qui va supprimer toutes les ip plus vieille que 24h...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $ip = $_SERVER["REMOTE_ADDR"]; INSERT INTO ...
Blog - Mon espace developpez -
Oracle Certified Professional, Java SE 6 Programmer eZ Publish Certified developer
j'ai crée une table client avec 3 entrées :
_ip:pourinserer l'ip de la personne adns ma table
_temps:pour prendre le timestamp de la personne quand on a inscrit son ip
_entree:pour la condition
je n'arrive pas à ajouter d'entrées a ma table.
quand j'execute il ne met pas d'erreur mais n'inscrit rien dans ma table:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <?php mysql_connect("localhost", "root", ""); mysql_select_db("test"); $retour = mysql_query('SELECT COUNT(*) AS entree FROM client WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\''); $donnees = mysql_fetch_array($retour); echo $donnees['entree']; if ($donnees['entree'] == 0) { mysql_query('INSERT INTO client VALUES(' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')'); //header('Location: \index.php'); } else { } $datec=time(); mysql_query('DELETE FROM client WHERE timestamp => ' . $donnees['team']+120 . ' AND ip=\'' . $_SERVER['REMOTE_ADDR'] ); mysql_close(); ?>
pouriez vous corriger mes eventuelles erreurs svp?
merci d'avance
Code Présentation mauvaise : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 mysql_query('INSERT INTO client (ip, temps) VALUES (\'' . $_SERVER['REMOTE_ADDR'] . '\', \'' . time() . '\')');Petite aide pour pas la refaire : On dit supérieur ou égal, et non pas égal ou supérieur .
Code Erreur : => à la place de >= : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 mysql_query('DELETE FROM client WHERE timestamp >= ' . $donnees['team']+120 . ' AND ip=\'' . $_SERVER['REMOTE_ADDR'] ); mysql_close();
Y'a t'il une clé primaire dans ta table ?
pour trouver d'où vient l'erreur lance les requêtes comme indiqué dans la FAQ :
http://php.developpez.com/faq/?page=...ysql_ressource
la premiere parti du code marche bien et donc l'ip et le timestamp s'insere bien dans la table mais pour la 2e partie qui consiste a effacer les entrees quand elle sont la depuis 30seconde ne marche pas trop.
ce que je veux faire c'est:
effacerles entrees dans la table client où timestamp >= ancien timestamp enregistré +30 secondes.
donc normalement toute les 30 seconde on redirige sur une page.
pourquoi meme la variable $vard s'affiche quand je la met dans la 1ere parti du code et pas quand je l'a met dans la 2e partie?
je pense que tout le probleme est dans le while mais pourtant il est necessaise pour utiliser les entrees de la table client.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <?php mysql_connect("localhost", "root", ""); mysql_select_db("forum"); $retour = mysql_query('SELECT COUNT(*) AS entree FROM client WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\' '); $donnees = mysql_fetch_array($retour); if ($donnees['entree'] == 0) { mysql_query('INSERT INTO client (ip, team) VALUES (\'' . $_SERVER['REMOTE_ADDR'] . '\', \'' . time() . '\')'); header('Location: \index.php'); } else { } while ($donnees = mysql_fetch_array($retour) ) { $vard=time(); echo $vard; /*mysql_query('DELETE FROM client WHERE '.$datec.' >= ' . $donnee['team']30 . ' AND ip=\'' . $_SERVER['REMOTE_ADDR'] ); */ } mysql_close(); ?>
on ma conseillé la methode avec tache planifiée windows :
et il faut créer une tâche planifiée dans Windows :
* Menu Démarrer -> Panneau de configuration -> Tâches planifiées -> Création d'une tâche planifiée
* Bouton Parcourir
* c:\[dossier de PHP]\php.exe
* Après le nom du programme que tu viens de sélectionner ajoute : -f nom_du_script où nom_du_script est le nom de ton script (chemin complet depuis c:\)
* Exécuter cette tâche : tous les jours
* Choisis l'heure et la date de début, et laisse sélectionné Tous les jours
* Laisse le compte tel qu'il est (à moins qu'il ne te faille saisir un mot de passe pour accéder à ton compte)
* Valide le tout
_deja qu'est ce que c'est php.exe surtout avec l'hebergeur ifrance?
_quand je valide l'etape avec le nom du script il me met que les antislash sont interdit donc impossible de mettre le chemin du script.
_quand il dit laisse le compte je vois pas de quel compte il parle.
vous n'auriez pas un resumé plus clair de cette methode svp?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager