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 :

Script blocant l'accès à intervalle d'une heure, code correct ou pas ?


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 240
    Points : 81
    Points
    81
    Par défaut Script blocant l'accès à intervalle d'une heure, code correct ou pas ?
    Bonjour,

    J'ai réalisé un code entiérement, et comme je débute tout juste en php j'aimerais savoir si mon code est correct et surtout si il ne comporte pas des failles.

    Ce code me permet de permettre à mes visiteurs de donner 1 point à un site toutes les heures seulement.

    Voila le code qui vérifi si la personne n'a pas déja voté, en vérifiant la date de sa derniere connexion au script réussite.

    Il vérifi également si la personne c'est déja connecté avec son IP et si non il l'enregistre dans la bd.

    J'attend vos critiques

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    <?php
     
    // conexion bd 
    mysql_connect("localhost", "root", ""); // Connexion à MySQL
    mysql_select_db("eckopland2"); // Sélection de la base
     
    // recuperation ip visiteur 
    	$ip = $_SERVER['REMOTE_ADDR'];
     
    // vérification anti flood pour 1heure soit 3600 secondes
     
    // recuperation info dans table visiteur
    	$mysql_result = mysql_query("SELECT COUNT(*) FROM visiteur WHERE ip = '$ip';");
    	$mysql_array = mysql_fetch_row($mysql_result);
     
    	// si ip visiteur non trouvé, créer un nouvel enregistrement 
    	if ($mysql_array[0] > 0) 
    		{
    			// si ip existe test si l'heure est écoulé 
    			// dans un premier temps recuperation de la date de la dernier conexion 
    			$reponse = mysql_query("SELECT temps FROM visiteur WHERE ip='$ip'");
    			$donnees = mysql_fetch_array($reponse);
    			$lastime = $donnees['temps'];
    			// ensuite on compare cette date à la date courante
    			$dateC =  date('Y-m-d H:i:s');
    			// date courante - date visiteur
    			$duree = strtotime($dateC) - strtotime($lastime);
    			// si durée inférieure à 3600
    			if ($duree < 3600) 
    				{
    					// fermer sql 
    					mysql_close(); // Déconnexion de MySQL
    				}
     
    			// si durée supérieure à 3600 OK
    			else 
    				{
    					// mise à jour lastime
    					mysql_query("UPDATE visiteur SET temps = NOW() WHERE ip = '$ip'");
    					// demande variable get Fichier
    					$id = $_GET['id'];
    					// mise à jour  du classement
    					mysql_query("UPDATE gallery SET vu = NOW() WHERE fichier = '$id'");  
    					// fermeture sql
    					mysql_close(); // Déconnexion de MySQL
    				}
    		} 
    		else 
    		{
    			// si ip visiteur non trouvé, créer un nouvel enregistrement 
    			// envoi ip et date courante dans visiteur
    			$sql = "INSERT INTO visiteur VALUES ( '".$ip."',  now())";
    			$res = mysql_query($sql) or die(mysql_error()); 
    			// demande variable get fichier
    			$id = $_GET['id'];
    			// mise à jour  du classement
    			mysql_query("UPDATE gallery SET vu = NOW() WHERE fichier = '$id'");  
    			// fermeture sql
    			mysql_close(); // Déconnexion de MySQL
    		}
     
    ?>

  2. #2
    Membre éclairé Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Points : 779
    Points
    779
    Par défaut
    Hello,

    Juste une petite chose qui me choque...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // recuperation info dans table visiteur
    	$mysql_result = mysql_query("SELECT COUNT(*) FROM visiteur WHERE ip = '$ip';");
    	$mysql_array = mysql_fetch_row($mysql_result);
    Ici tu récupères le nombre de ligne de la table Visiteur pour l'adresse IP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $reponse = mysql_query("SELECT temps FROM visiteur WHERE ip='$ip'");
    			$donnees = mysql_fetch_array($reponse);
    			$lastime = $donnees['temps'];
    Ensuite, et si la première requete a générer un résultat, tu rélance un appel a MySQL pour retrouver la colonne temps. Je pense que tu peux reduire a un seul appel comme ceci (a voir si cela fonctionne) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // recuperation info dans table visiteur
    	$mysql_result = mysql_query("SELECT * FROM visiteur WHERE ip = '$ip';");
    	$mysql_array = mysql_fetch_row($mysql_result);
     
    	// si ip visiteur non trouvé, créer un nouvel enregistrement 
    	if ($mysql_array[0]) 
    		{
    			// si ip existe test si l'heure est écoulé 
     
    			$lastime = $mysql_array[0]['temps'];
    Fais le test et dis nous si cela ne fonctionne pas mieux..

    @+
    cadou
    LMN24 - Site d'actualité internationale multilingue
    http://www.lmn24.com

Discussions similaires

  1. Verifier une heure dans un intervalle
    Par donnang dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 01/10/2013, 16h08
  2. Execution de script à une heure precise
    Par france38 dans le forum Développement
    Réponses: 18
    Dernier message: 10/06/2011, 19h10
  3. Script filtrage mac à une heure précise.
    Par Nowwis dans le forum C#
    Réponses: 6
    Dernier message: 10/04/2010, 17h19
  4. [Sécurité] Arret d'un script au bout d'une heure
    Par NhyMbuS dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 15/11/2006, 18h11
  5. faire tourner un script à une heure donnée
    Par nebil dans le forum Langage
    Réponses: 2
    Dernier message: 03/07/2006, 12h30

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