IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

IP avec PHP


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 25
    Points : 10
    Points
    10
    Par défaut IP avec PHP
    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

  2. #2
    Membre éclairé
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Points : 776
    Points
    776
    Par défaut
    Quel est le problème?
    Avant de poster : FAQ, tutos, rechercher, google, ... Après :
    Merci

  3. #3
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    Ben

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ip = $_SERVER["REMOTE_ADDR"];
    INSERT INTO ...
    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...
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 25
    Points : 10
    Points
    10
    Par défaut
    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

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Points : 422
    Points
    422
    Par défaut
    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() . '\')');
    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();
    Petite aide pour pas la refaire : On dit supérieur ou égal, et non pas égal ou supérieur .

    Y'a t'il une clé primaire dans ta table ?

  6. #6
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    pour trouver d'où vient l'erreur lance les requêtes comme indiqué dans la FAQ :
    http://php.developpez.com/faq/?page=...ysql_ressource

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 25
    Points : 10
    Points
    10
    Par défaut
    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();
    ?>

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 25
    Points : 10
    Points
    10
    Par défaut
    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?

Discussions similaires

  1. Connexion à Firebird avec PHP
    Par genova dans le forum Connexion aux bases de données
    Réponses: 7
    Dernier message: 12/09/2006, 17h48
  2. Travailler avec PHP / Apache / MySQL
    Par R3iTt0R dans le forum Linux
    Réponses: 22
    Dernier message: 24/06/2004, 11h03
  3. [débutant] choix de postgre avec php / migration
    Par bilbon.S dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 23/03/2004, 14h05
  4. Création d'utilisateur sous PostgreSQL 7.3.2 avec PHP
    Par duongkhang dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 06/06/2003, 13h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo