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 :

N'afficher la page que une seul fois par jour par ip


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Points : 27
    Points
    27
    Par défaut N'afficher la page que une seul fois par jour par ip
    Bonjour,
    Je m'essaye à la création de mini jeux en php.
    J'ai un niveau très médiocre, c'est pourquoi j'ai besoin de personnes sachant programmer en php pour m'expliquer ceci:
    Comment puis-je faire pour que une page (celle où je mettrais le script) ne s'affiche qu'une seul fois par jour pour chaques IP (comme pour la page de ville de Miniville, sauf que j'aimerais rediriger vers une autre page).

    J'ai pensé à:
    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
    22
    23
    24
    25
    <?php
    // On recuper le pseudo trouvé grace a la connexion d'avant
    $adressip=$_SERVER["REMOTE_ADDR"];
    $time=time();
    // connexion à la base actuel (la même mais on refait pour plus de neteter)
    $db = mysql_connect('MONSERVEUR', 'MONCOMPTE', 'MONMOTDEPASSE')  or die('Erreur de connexion '.mysql_error());
    // sélection de la base  
     
        mysql_select_db('MADATABASE',$db)  or die('Erreur de selection '.mysql_error());
     
        // on écrit la requête sql
        $sqlll = "INSERT INTO `MATABLE`.`ipstocked` (
    `ip` ,
    `date` ,
    `forwho`
    )
    VALUES (
    '$adressip', '$time', '$pseuo'
    );";
        // on insère les informations du formulaire dans la table
        mysql_query($sqlll) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
        mysql_close();  // on ferme la connexion
     
     ?>
    A partir de là, j'enregistre l'IP du visiteur et sa date de visite.
    Mais je ne comprend pas comment faire après.

    Merci d'avoir lu ce message.

  2. #2
    Membre éprouvé Avatar de fenkys
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 376
    Points : 1 054
    Points
    1 054
    Par défaut
    Avant d'insérer les renseignement dans la base, tu devrais vérifier qu'ils n'y sont pas déja et faire une redirection si c'est le cas.

    S'ils ne sont pas présent, tu les insères et tu affiche ta page.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    Merci pour votre réponce, malheureusement, je ne sais pas faire cela.
    Je vais essayer de faire un résultat similaire.
    J'ajoute une collone 'Redirection' à la table des adresses IPs enregistrés.
    Tout au debut de la page php, je fait en sorte que la page qui soit chargée soit celle de 'Redirection'.
    Comme ca, si l'IP n'est pas enregistrée, aucune redirection n'aura lieu (dumoins je l'espère...). Et si l'IP est enregistré, cela redirigera vers la page que j'aurais mis par défaut pour 'redirection'.

    Maintenant, comment faire pour réinitialiser la table des IPs enregistrées toutes les 24h?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    UP.
    Voila, je cherche, si c'est plus simple à faire: que une IP ne puisse rajouter qu'un 'point' par jour.
    Voici, dans l'ordre, les scripts (seulement ceux qui sont en rapport avec la demande) de ma page:
    ($oldtime-$time==222222222222222222222222 étant utilisé uniquement pour les test car forcément vrai.)
    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
    <?php
    $adressip=$_SERVER["REMOTE_ADDR"];
    $theip=$row_Recordset1['ip'];
    $times=time();
    $oldtime=$row_Recordset1['date'];
    if ($oldtime-$time==222222222222222222222222)
    {
    // connexion à la base actuel (la même mais on refait pour plus de neteter)
    $db = mysql_connect('xxxxx', 'xxxxx', 'xxxxx')  or die('Erreur de connexion '.mysql_error());  
     
        mysql_select_db('xxxxx',$db)  or die('Erreur de selection '.mysql_error());
     
      $sqlll = "DELETE FROM 'ipstocked' WHERE CONVERT('ipstocked','ip') = '$adressip' ;";
     
      mysql_query($sqlll) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
      };
    ?>
    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
     
    <?php if ($totalRows_Recordset2 == 0) { // Show if recordset empty ?>
      <?php
    $pseuo=$row_test['Pseudo'];
    mysql_close();
    $db = mysql_connect(xxxx', 'xxxxx', 'xxxxx')  or die('Erreur de connexion '.mysql_error());
    
        mysql_select_db('xxxxx',$db)  or die('Erreur de selection '.mysql_error());
        
        $sqlll = "UPDATE Joueur SET Point=Point+1 WHERE Pseudo='$pseuo'";
        
        mysql_query($sqlll) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    
        mysql_close();
     ?>
    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
    <?php
    $adressip=$_SERVER["REMOTE_ADDR"];
    $time=time();
    $pseuo=$row_test['Pseudo'];
    $db = mysql_connect('xxxxx', 'xxxxxx', 'xxxxx')  or die('Erreur de connexion '.mysql_error());
     
        mysql_select_db('xxxx',$db)  or die('Erreur de selection '.mysql_error());
     
        $sqlll = "INSERT INTO `xxxxxx`.`ipstocked` (
    `ip` ,
    `date` ,
    `forwho`
    )
    VALUES (
    '$adressip', '$time', '$pseuo'
    );";
        mysql_query($sqlll) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
       ?>
    Petit problème supplémentaire: pour qu'un point s'ajoute il faut actualiser, est-ce possible de le faire dès le premier affichage de la page?

Discussions similaires

  1. Afficher le contenu d'une page une seule fois
    Par CLion dans le forum Langage
    Réponses: 8
    Dernier message: 25/03/2013, 14h50
  2. Actualiser une page html une seule fois
    Par dalalbay dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/09/2012, 11h51
  3. Requête SQL: Afficher Gratuit/Payant en une seule fois
    Par Sethenssen dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/11/2009, 20h43
  4. [MySQL] Imprimer plusieurs pages en une seule fois
    Par dreamover dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 27/05/2009, 11h09
  5. rafraichir une page HTML une seul fois
    Par skillipo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 20/07/2007, 09h40

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