Problème d'ip avec php

cs_ghyslain Messages postés 23 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 29 août 2008 - 13 janv. 2007 à 01:20
cs_ghyslain Messages postés 23 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 29 août 2008 - 17 janv. 2007 à 19:43
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

18 réponses

Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
13 janv. 2007 à 03:02
Bonsoir,

Pour avoir l'IP, il faut regarder $_SERVER['REMOTE_ADDR']

SI tu veux l'effacer de la base, il te faut un marqueur temporel également, genre tu enregistre dans un deuxieme champ de la table la date et l'heure.
Pour supprimer, suffira de comparer 2 dates.
0
cs_ghyslain Messages postés 23 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 29 août 2008
13 janv. 2007 à 04:34
c'est bon si j'enregistre un timestamp a la premiere connection de l'ip et qu'apres je fasse une condition qui le compare du style:?

si (timestamp actuel >= 1er timestamp+84600secondes(24h))alors

effacé ip et timestamp lui correspondant de la table

sinon
rien faire
0
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
13 janv. 2007 à 12:50
Exact
0
cs_ghyslain Messages postés 23 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 29 août 2008
13 janv. 2007 à 13:31
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:


<?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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ghyslain Messages postés 23 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 29 août 2008
13 janv. 2007 à 21:23
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.




<?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();
?>
0
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
13 janv. 2007 à 22:52
Pour effacer les IP qui sont dans ta table depuis plus de 24h, il te faut une tache planifiée qui appelle une page contenant le script de suppression régulierement.

En gros, il faudra te baser sur 2 pages pour faire ce que tu veux.

Dans la premiere, tu récuperes le timestamp et l'IP, et tu mets ca dans une base.

Sur la deuxieme (qui n'affiche aucun texte, et qui n'est pas dispo pour les "clients"), que tu appeleras avec ta tache planifiée, il suffit de mettre une ligne de SQL :

mysql_query ("DELETE FROM <table> WHERE timestamp <= (" . time() . " - 86400)");
0
cs_ghyslain Messages postés 23 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 29 août 2008
13 janv. 2007 à 23:30
j'ai bien compris le principe mais je vois pas trop comment l'appliquer en effet j'ai chercher sur google et pas moyen d'avoir un petit tuto, meme pas sur le siteduzero donc je voudrais juste savoir le coed qui permet de faire l'appel de la page ou je vais mettre :
 
mysql_query ("DELETE FROM <table> WHERE timestamp <= (" . time() . " - 86400)");
0
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
14 janv. 2007 à 00:15
Pour mettre le code, il te faut un accès "physique" au serveur, pour mettre en place une tache planifiée (crontab) qui via lynx ou un autre navigateur en mode texte va appeler ton script

/1 * * * * lynx http://www.ton-serveur.fr/ton-script-de-suppression.php

pour le lancer toutes les minutes par exemple.
Il faudra regarder les options pour charger la page et quitter proprement.
0
cs_ghyslain Messages postés 23 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 29 août 2008
14 janv. 2007 à 00:44
n'étant pas très doué en php, le manque de documentation sur crontab me bloque carement. je suis sur ifrance et il n'y a rien qui ressemble a du cron ou a lynx....
meme avec easyphp je ne trouve rien

au pire n'y aurais t-il pas une solution plus facile qui ferai le meme resultat?
0
cs_ghyslain Messages postés 23 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 29 août 2008
14 janv. 2007 à 01:09
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?
0
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
14 janv. 2007 à 02:17
php.exe permet d'executer du code php sans ouvrir de navigateur.
C'est étrange que les antislash (\) soient interdits... parce que sinon, pas moyen de coller un chemin sous windows.

essaie, dans ta tache planifiée de mettre c:\chemin\php.exe -f http://<ton login>.ifrance.com/<ton dossier>/<ton script>

Quand il parle de compte, je pense qu'il parle du compte utilisateur utilisé par la tache planifiée.
0
cs_ghyslain Messages postés 23 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 29 août 2008
14 janv. 2007 à 02:29
je ne vois pas de php.exe dans monordinateur appart dans easyphp donc je met quoi comme chemin pour php.exe?

sinon dans le deuxieme fichier php je met seulement :
mysql_query ("DELETE FROM <table> WHERE timestamp <= (" . time() . " - 86400)");

ou je dois rajouté: <?php mysql_connect ....?

quand jais cree la tache, je la met ou dans le serveur ftp de ifrance ?
0
cs_ghyslain Messages postés 23 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 29 août 2008
15 janv. 2007 à 01:08
???
0
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
15 janv. 2007 à 02:27
Il faut mettre le chemin complet vers php.exe...

Et ton script doit etre completement fonctionnel, donc il doit avoir les informations de connexion a la base et tout, et pour etre reconnu comme du pap, il faut les balises <?php ?> en début et fin de fichier.
0
cs_ghyslain Messages postés 23 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 29 août 2008
15 janv. 2007 à 22:52
sa me dit pas ou se trouve php.exe?
le seul php.exe est dans mon easyphp, je met le chemein de ce php.exe?

quand jais cree la tache, je la met ou dans le serveur ftp de ifrance ?
car dans les propriétés il mettent ed chemin du genre c:\... alors que sur un serveur il n'ya pas de lecteur c:.
mon script de suppression je le met oudans le serveur?
0
cs_ghyslain Messages postés 23 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 29 août 2008
16 janv. 2007 à 00:43
je suis degouté, apparemment avec ifrance c'est impossible.

il n'ya pas une alternative.
en fait le code visait a forcer le clic sur une pub toute les 24h
donc une redirection sur la page ou il fallait clicker sur la pub.

il n'y a pas une technique pour arriver a se but avec un code different et peut etre une methode differente.
0
cs_ghyslain Messages postés 23 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 29 août 2008
17 janv. 2007 à 07:34
???
0
cs_ghyslain Messages postés 23 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 29 août 2008
17 janv. 2007 à 19:43
quelqu'un?
0
Rejoignez-nous