Adresse ip

bonjour
je voudrais que sa affiche un message : vous etes deja enregistrer si la personne s'est deja enregistrer grace a l'adresse ip

regarder mon code
<?php
$ip = remote_ADDR
{ 

$sql=mysql_query("select ip _user from ip"); 

} 
if ($donnees = mysql_fetch_array($sql) ) 
{ 

echo"vous etes deja enregistré"; 

} 
Else
{ 
 
}
?>


merci de m'aider
Configuration: Windows XP
Internet Explorer 7.0

44 réponses

Résumé de la discussion

Le problème consiste à afficher un message 'vous etes deja enregistré' lorsque l'adresse IP d'une personne est déjà enregistrée dans la base, et à déclencher le bloc approprié lors de l'inscription. Des réponses indiquent que l'internaute n'accède pas à la base et que le script PHP doit interroger la base de données pour vérifier l'existence de l'IP et agir. En cas d'IP détectée, on refuse ou on signale l'inscription; sinon, on enregistre l'IP, mais des participants relèvent les limites des adresses dynamiques et suggèrent des alternatives comme le cookie ou l'email. Une nuance utile est que certaines solutions évoquées privilégient l'email ou le cookie plutôt que l'IP, en raison de la variabilité des IP et des risques de falsification.

Bobot (l’IA à votre service)
  1. desoler je n'avait pas vu et merci mais ya un probleme voici mon code de la page fin de lincription :
    
    
    <?php 
    if (isset($_POST['enregistrer'])){ 
    mysql_connect("localhost", "root","") or Die ("Impossible de se connecter"); 
    
    mysql_select_db("ml");
    
    
    
    $ins = mysql_query('INSERT INTO enregistrer VALUES("","'.$login.'","'.$password.'","'.$email.'", 
    "'.$paypal.'","'.$prenom.'","'.$nom.'","'.$ip.'","'.$pays.'","'.$parrain.'")'); 
    
     
    
    //Compteur de la bdd ********************** 
    $compteur = mysql_query("select * from `enregistrer`");
    echo "le nombre d'enregistrements actuel est: ".mysql_num_rows($compteur)."<br />" ; 
    ?> 
    
    
    <?php
    $IP = $_SERVER["REMOTE_ADDR"];
    
    mysql_connect("localhost","root","") or die("erreur de connexion au serveur");
    mysql_select_db("ml") or die("erreur de connexion a la base de donnees");
    
    $ip = $_SERVER['REMOTE_ADDR'];
    $sql = 'INSERT INTO ip(up_user) values(\''.$ip.'\')';
    $res = mysql_query($sql);
    if($res){
     echo 'ip enregistree';
    }
    else {
      echo 'Erreur lors de l\'enregistrement de l\'ip';
    }
    
    
    ?>
    
    


    et sa me mais

    Parse error: syntax error, unexpected $end in C:\wamp\www\teste\fin_de_linscription.php on line 82

    merci

    pour enregistrer les donnné j'ai fais ce code :
    <FORM method=POST action="fin_de_linscription.php">
    <TABLE BORDER=0>
    
    <input name="ip" id="ip" value=<?php
    
     $_SERVER["REMOTE_ADDR"]; 
    
    ?>
    
    
    
    
    <TR>
    	<TD>login</TD>
    	<TD>
    	<INPUT type=text name="login" id="login">
    	</TD>
    </TR>
    
    <TR>
    	<TD>password</TD>
    	<TD>
    	<INPUT type=text name="password" id="password">
    	</TD>
    </TR>
    
    <TR>
    	<TD>email</TD>
    	<TD>
    	<INPUT type=texte name="email" id="email">
    	</TD>
    </TR>
    
    <TR>
    	<TD>paypal adresse</TD>
    	<TD>
    	<INPUT type=texte name="paypal" id="paypal">
    	</TD>
    </TR>
    
    <TR>
    	
    	<TD>prenom</TD>
    	<TD>
    	<INPUT type=texte name="prenom" id="prenom">
    	</TD>
    	</TD>
    </TR>
    
    <TR>
    	
    	<TD>nom</TD>
    	<TD>
    	<INPUT type=texte name="nom" id="nom">
    	</TD>
    	</TD>
    
    <TR>
    	<TD>pays</TD>
    	<TD>
    	<INPUT type=texte name="pays" id="pays">
    	</TD>
    </TR><br>
    
    <TR>	
    	<TD>parain</TD>
    	<TD>
    	<INPUT type=texte name="parrain" id="parrain">
    	</TD>
    	</TD>
    </TR><BR>
    
    	<TD COLSPAN=2>
    	<INPUT type="submit" value="Envoyer">
    	</TD>
    </TR>
    </TABLE>
    </FORM>
    </font>
    


    merci beaucoup
    1. Salut,
      Je ferais un truc comme ca:
      // connexion mysql à mettre ici
      $ip = $_SERVER['REMOTE_ADDR'];
      $sql = 'INSERT INTO ip(up_user) values(\''.$ip.'\')';
      $res = mysql_query($sql);
      if($res){
       echo 'ip enregistree';
      }
      else {
        echo 'Erreur lors de l\'enregistrement de l\'ip';
      }
      
      1. Contributeur
        Oui, mais, là ça te permet pas de savoir si l'IP est déjà enregistré.
      2. @fiddyBen je répond à la question juste au dessus :
        "moi se que je voudrais ses le code me permetant d'enregstrer l'ip de la personne qui s'inscrit "
    2. moi se que je voudrais ses le code me permetant d'enregstrer l'ip de la personne qui s'inscrit
      mais je n'y arrive pas , personne aurais un code
      merci
      1. il manque ;
        echo "le nombre d'enregistrements actuel est: ".mysql_num_rows($compteur)."<br />" ;}
        il manque "
        $query = "SELECT ip from IP";
        1. voici se que sa me met

          Parse error: syntax error, unexpected '}', expecting ',' or ';' in C:\wamp\www\teste\fin_de_linscription.php on line 60

          mon code
          
          
          
          <?php 
          if (isset($_POST['enregistrer'])){ 
          mysql_connect("localhost", "root","") or Die ("Impossible de se connecter"); 
          
          mysql_select_db("ml");
          
          
          
          $ins = mysql_query('INSERT INTO enregistrer VALUES("","'.$login.'","'.$password.'","'.$email.'", 
          "'.$paypal.'","'.$prenom.'","'.$nom.'","'.$ip.'","'.$pays.'","'.$parrain.'")'); 
          
           
          
          //Compteur de la bdd ********************** 
          $compteur = mysql_query("select * from `enregistrer`");
          echo "le nombre d'enregistrements actuel est: ".mysql_num_rows($compteur)."<br />" } 
          ?>
          
          
          <?php
          $IP = $_SERVER["REMOTE_ADDR"];
          
          mysql_connect("localhost","root","") or die("erreur de connexion au serveur");
          mysql_select_db("ml") or die("erreur de connexion a la base de donnees");
          
          $query = "SELECT ip from IP;
          $result = mysql_query($query);
          while($row = mysql_fetch_row($result)){
                if($row[0] == $IP){
                     echo 'déja enregistré';
                     echo 'retour à l'accueil';
                     break;
                }
          }
          //tu peux créer son compte.
          
          
          ?>
          
          1. Contributeur
            Re,
            Je me suis inspiré de : https://www.commentcamarche.net/contents/784-php-bases-de-donnees
            Ton code pourrait ressembler à ceci :
            $IP = $_SERVER["REMOTE_ADDR"];
            
            mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
            mysql_select_db("nomBase") or die("erreur de connexion a la base de donnees");
            
            $query = "SELECT ip from IP;
            $result = mysql_query($query);
            while($row = mysql_fetch_row($result)){
                  if($row[0] == $IP){
                       echo 'déja enregistré';
                       echo 'retour à l'accueil';
                       break;
                  }
            }
            //tu peux créer son compte.
            
            

            Rem : Il y a peut-être des erreurs. Le PHP est loin derrière moi.
            1. ok donc j'enleve le champs id , echo et je gard juste $_Server['REMOTE_ADDR'] ensuite dans ma page d'apres je l'enregistre
              1. oui mais pour l'enregistrer je dois la montrer dans l'inscription comme un champs donc si il a envie il pourrat la modifier
                1. Contributeur
                  oui mais pour l'enregistrer je dois la montrer dans l'inscription comme un champs donc si il a envie il pourrat la modifier
                  Non. Tu n'as pas besoin de l'afficher dans un champs. Tu mets l'IP dans une variable (que t'affiches pas à l'écran bien sûr). Et cette variable, tu l'écris dans ta BDD après vérifier si elle n'existe pas déjà.
              2. parce que je l'ai pas mis j'ai oublier mais se n'est pas le pb s'est que la personne qui s'enregistre peut la modifier s'en probleme se que je voudrait s'est la caché et ensuite je ne connais pas le code permetant de verifier si dans la table il y a l'ip selectionner
                1. Contributeur
                  Mais non, il pourra pas.
                  L'internaute n'a pas accès à la base de données !. S'il souhaite se connecter, ton script php va se connecter à la bdd pour voir si l'IP existe déjà si oui elle refuse, si non, elle l'écrit. Point barre.
                  Ce n'est pas l'internaute qui écrit dans la bdd, mais le script php !
              3. je ne veut pas justement qu'il puisse la modifier je veux juste l'enregistrer et la resssortir pour verifier si il est deja inscrit ou pas
                1. Contributeur
                  Oui ça je m'en doute, c'est ce que je te disais justement ^^.
                  Mais, dans ton code, je ne vois pas de commandes : INSERT. Donc ton code peut pas écrire dans la bdd.

                  Lorsque l'utilisateur demande à s'enregistrer, voici les étapes à faire :
                  1) tu te connectes à ta bdd.
                  2) tu collectes l'IP de l'internaute et tu stockes dans une variable le hash (md5) de cette IP. Et tu parcours ta table à la recherche de cette variable. Si la variable est trouvée, alors, tu affiches 'Un seul compte par famille" ou sinon tu écris dans la bdd avec INSERT.

                  Cdlt
              4. oui je veux l'enregistrer dans la bdd mais mon seul pb c'est que sa l'affiche et qu'on peut la modifier comment on fait pour l'enregistrer sans que la personne qui s'inscrit puisse la modifier
                1. Contributeur
                  Non, si tu mets dans la BDD, les gens ne peuvent pas la modifier directement. Les gens n'ont pas accès à la bdd comme ça, et heureusement.
                  Ton code php pour te connecter avec ta bdd et comment tu écris l'information dedans, est ton code du début ?
                  Cdlt
              5. Contributeur
                Tout dépend où tu souhaites garder l'information. Dans une base de données ?
                Après la syntaxe dépendra de ta BDD. Et je te conseille plutôt de sauvegarder le hash de l'IP plutôt que l'IP elle-même.
                Sur google, tu trouveras plein de sites expliquant comme interagir avec une BDD en php. ;)

                Cdlt
                1. on vas se contenter de sa ses deja pas mal , bon bas comment on fait pour enregistrer l'ip sans la montrer j'ai mis le code que j'utiliser un peu au dessus pouver-vous le modifier ou m'en donner un nouveau qui pourrait enregistrer l'ip sans la montrer et afficher un mesage d'erreur si l'email ou l'ip est deja utiliser
                  merci
                  1. c'est deja sa sinon comment je peux faire pour encore plus de secu
                    1. Contributeur
                      c'est deja sa sinon comment je peux faire pour encore plus de secu
                      Tout dépend si tu continues de parler pour empêcher les multicomptes ou si tu parles d'authentification.

                      c'est deja sa
                      Ben disons que ta solution est trop restrictive et inefficace. Je m'explique.
                      En faisant ça, tu obliges la création d'un compte unique par famille et par entreprise mais pas par personnes.
                      Et en plus de ça, il suffit de s'y connaître un tant soit peu pour contourner la sécurité (du genre IP spoofing + création d'un mail bidon).

                      A cause (grâce) au NAT des routeurs, tu ne pourras jamais empêcher la création de multi-compte.

                      Cdlt
                  2. l'adresse ip serat automatiquement enregistreer sans qu'il puisse la modifier et l'e-mail apart qu'il en ai plein sinon il pourrat qu'une seul fois est en plus dans l'email je voudrais mettre un lien pour verifier son e-mail comme sa si il veut se connecter il serat obliger de appuyer sur l-email et donc ne pas mettre n'import quoi
                    1. Contributeur
                      l'adresse ip serat automatiquement enregistreer sans qu'il puisse la modifier
                      Oui j'ai compris. Sauf que l'adresse IP ça s'usurpe et puis ce n'est pas une par personne. Par exemple dans une société, beaucoup d'employés auront la même adresse IP pour aller sur internet, impossible donc de les différencier en te basant uniquement sur leur IP. Quand à l'e-mail, ça se devine. Donc niveau sécurité, ça craint.
                  3. sur mon site j'ai un espace membre mias pour eviter les multicompte je voudrais enregistrer l'ip et l'adresse e-mai pour ensuite si il essay de se reinscrive je le sache grace a l'ip ou l'adresse e-mail
                    1. Contributeur
                      Malheureusement ton exigence est impossible.
                      Un utilisateur pourra toujours vouloir s'authentifier à partir d'une autre adresse IP en te fournissant une autre adresse mail (et ça tu peux rien y faire).
                      L'autre scénario possible est qu'une personne utilisant la même adresse IP (je pense notamment à un collègue dans le même réseau local que toi) et connaissant ton mail, pourra utiliser ton compte (et ça tu peux rien y faire non plus).

                      Voilà pourquoi le login/mot de passe est très important.
                  4. Contributeur
                    Ne jamais authentifier une personne avec son adresse IP qui est bien trop falsifiable. (ip spoofing par exemple).
                    Donc, demande un couple login/mot de passe lors de l'authentification.
                    Ensuite, je te conseille l'utilisation de sessions avec l'adresse IP, et l'user-agent (attention en cas de proxy http). Le tout avec un joli MD5.

                    Utilise si tu peux l'HTTPS.
                    Une durée de session pas trop élevée.
                    Vérifier également les champs afin d'éviter les attaques par injection.
                    Cdlt
                    1. quelqu'un pourrait me donnner la combine pour enregistrer l'adresse ip sans que la personne qui s'inscrve la change
                      merci
                      1. Contributeur
                        Impossible. Malheureusement, on n'est pas dans un monde parfait. Et l'utilisateur pourra toujours te faire croire qu'il a une autre adresse IP.
                    • 1
                    • 2
                    • 3