PHP

Récupérer l'IP d'inscription des membres

RĂ©solu

Bonjour,


Ça fait plusieurs jours que je cherche Ă  savoir comment rĂ©cupĂ©rer l'adresse IP d'inscription des membres pour des blocages Ă©ventuelles de ces derniers.😅


Ma base de donnée et mon code


users.sql


--
-- Structure de la table `new-users`
--

CREATE TABLE `users` (
  `id` bigint(20) NOT NULL,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `avatar` text NOT NULL,
  `signup_date` int(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


sign_up.php


<?php
error_reporting(0);
?>

<?php
include('config_signup.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
        <link rel="shortcut icon" type="image/x-icon" href="default/favicon.ico" />
        <title>Inscription</title>
    </head>
    <body>
        <div class="header">
            <a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Espace Membre" /></a>
        </div>
<?php
//On verifie que le formulaire a ete envoye
if(isset($_POST['username'], $_POST['password'], $_POST['passverif'], $_POST['email'], $_POST['avatar']) and $_POST['username']!='')
{
    //On enleve l'echappement si get_magic_quotes_gpc est active
    if(get_magic_quotes_gpc())
    {
        $_POST['username'] = stripslashes($_POST['username']);
        $_POST['password'] = stripslashes($_POST['password']);
        $_POST['passverif'] = stripslashes($_POST['passverif']);
        $_POST['email'] = stripslashes($_POST['email']);
        $_POST['avatar'] = stripslashes($_POST['avatar']);
    }
    //On verifie si le mot de passe et celui de la verification sont identiques
    if($_POST['password']==$_POST['passverif'])
    {
        //On verifie si le mot de passe a 6 caracteres ou plus
        if(strlen($_POST['password'])>=6)
        {
            //On verifie si l'email est valide
            if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
            {
                //On echape les variables pour pouvoir les mettre dans une requette SQL
                $username = mysql_real_escape_string($_POST['username']);
                $password = mysql_real_escape_string($_POST['password']);
                $email = mysql_real_escape_string($_POST['email']);
                $avatar = mysql_real_escape_string($_POST['avatar']);
                //On verifie sil ny a pas deja un utilisateur inscrit avec le pseudo choisis
                $dn = mysql_num_rows(mysql_query('select id from users where username="'.$username.'"'));
                if($dn==0)
                {
                    //On recupere le nombre dutilisateurs pour donner un identifiant a lutilisateur actuel
                    $dn2 = mysql_num_rows(mysql_query('select id from users'));
                    $id = $dn2+1;
                    //On enregistre les informations dans la base de donnee
                    if(mysql_query('insert into users(id, username, password, email, avatar, signup_date) values ('.$id.', "'.$username.'", "'.$password.'", "'.$email.'", "'.$avatar.'", "'.time().'")'))
                    {
                        //Si ca a fonctionne, on naffiche pas le formulaire
                        $form = false;
?>
<div class="message">Votre inscription à bien été prise en compte, mais votre compte n'est pas encore activé<br />
    <div class="message">Pour ce faire, vous recevrez trĂšs prochainement un mail de confirmation de crĂ©ation<p></p><a href="connexion.php"></a><br />
<a href="connexion.php">Se connecter</a></div>
<?php
                    }
                    else
                    {
                        //Sinon on dit quil y a eu une erreur
                        $form = true;
                        $message = 'Une erreur est survenue lors de l\'inscription.';
                    }
                }
                else
                {
                    //Sinon, on dit que le pseudo voulu est deja pris
                    $form = true;
                    $message = 'Un autre utilisateur utilise d&eacute;j&agrave; le nom d\'utilisateur que vous d&eacute;sirez utiliser.';
                }
            }
            else
            {
                //Sinon, on dit que lemail nest pas valide
                $form = true;
                $message = 'L\'email que vous avez entr&eacute; n\'est pas valide.';
            }
        }
        else
        {
            //Sinon, on dit que le mot de passe nest pas assez long
            $form = true;
            $message = 'Le mot de passe que vous avez entr&eacute; contien moins de 6 caract&egrave;res.';
        }
    }
    else
    {
        //Sinon, on dit que les mots de passes ne sont pas identiques
        $form = true;
        $message = 'Les mots de passe que vous avez entr&eacute; ne sont pas identiques.';
    }
}
else
{
    $form = true;
}
if($form)
{
    //On affiche un message sil y a lieu
    if(isset($message))
    {
        echo '<div class="message">'.$message.'</div>';
    }
    //On affiche le formulaire
?>
<span style="color: #ffffff;"><div class="content">
    <form action="sign_up.php" method="post">
        Veuillez remplir ce formulaire pour vous inscrire:<br />
        <div class="center">
            <label for="username">Nom d'utilisateur</label><input type="text" name="username" value="<?php if(isset($_POST['username'])){echo htmlentities($_POST['username'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
            <label for="password">Mot de passe<span class="small">(6 caract&egrave;res min.)</span></label><input type="password" name="password" /><br />
            <label for="passverif">Mot de passe<span class="small">(v&eacute;rification)</span></label><input type="password" name="passverif" /><br />
            <label for="email">Email</label><input type="text" name="email" value="<?php if(isset($_POST['email'])){echo htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
            <label for="avatar">Image perso<span class="small">(facultatif)</span></label><input type="text" name="avatar" value="<?php if(isset($_POST['avatar'])){echo htmlentities($_POST['avatar'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
            <input type="submit" value="S'inscrire" />
        </div>
    </form>
</div></span>
<?php
}
?>

        <div class="foot"><a href="<?php echo $url_home; ?>">Retour &agrave; l'accueil</a> - <a href="index.php">Accueil du site</a></div>
    </body>
</html>


Merci😀

1172 vues
15 avril 2020 Ă  17:51 (ÉditĂ©)
Cette pub permet au site de vivre ...

20 commentaires

Ok je la supprime, c'est correct


<?php
error_reporting(0);
?>

<?php
include('config_signup.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
        <link rel="shortcut icon" type="image/x-icon" href="default/favicon.ico" />
        <title>Inscription</title>
    </head>
    <body>
        <div class="header">
            <a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Espace Membre" /></a>
        </div>
<?php
//On verifie que le formulaire a ete envoye
if(isset($_POST['username'], $_POST['password'], $_POST['passverif'], $_POST['email'], $_POST['avatar'], $_SERVER['REMOTE_ADDR']) and $_POST['username']!='')
{
    //On enleve l'echappement si get_magic_quotes_gpc est active
    if(get_magic_quotes_gpc())
    {
        $_POST['username'] = stripslashes($_POST['username']);
        $_POST['password'] = stripslashes($_POST['password']);
        $_POST['passverif'] = stripslashes($_POST['passverif']);
        $_POST['email'] = stripslashes($_POST['email']);
        $_POST['avatar'] = stripslashes($_POST['avatar']);
        $_SERVER['REMOTE_ADDR'] = stripcslashes($_SERVER['REMOTE_ADDR']);
    }
    //On verifie si le mot de passe et celui de la verification sont identiques
    if($_POST['password']==$_POST['passverif'])
    {
        //On verifie si le mot de passe a 6 caracteres ou plus
        if(strlen($_POST['password'])>=6)
        {
            //On verifie si l'email est valide
            if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
            {
                //On verifie sil ny a pas deja un utilisateur inscrit avec le pseudo choisis
                $dn = mysql_num_rows(mysql_query('select id from users where username="'.$username.'"'));
                if($dn==0)
                {
                    //On recupere le nombre dutilisateurs pour donner un identifiant a lutilisateur actuel
                    $dn2 = mysql_num_rows(mysql_query('select id from users'));
                    $id = $dn2+1;
                    //On enregistre les informations dans la base de donnee
                    if(mysql_query('insert into users(id, username, password, email, avatar, ip, signup_date, ) values ('.$id.', "'.$username.'", "'.$password.'", "'.$email.'", "'.$avatar.'", "'.$ip.'", "'.time().'")'))
                    {
                        //Si ca a fonctionne, on naffiche pas le formulaire
                        $form = false;
?>
<div class="message">Votre inscription à bien été prise en compte, mais votre compte n'est pas encore activé<br />
    <div class="message">Pour ce faire, vous recevrez trĂšs prochainement un mail de confirmation de crĂ©ation<p></p><a href="connexion.php"></a><br />
<a href="connexion.php">Se connecter</a></div>
<?php
                    }
                    else
                    {
                        //Sinon on dit quil y a eu une erreur
                        $form = true;
                        $message = 'Une erreur est survenue lors de l\'inscription.';
                    }
                }
                else
                {
                    //Sinon, on dit que le pseudo voulu est deja pris
                    $form = true;
                    $message = 'Un autre utilisateur utilise d&eacute;j&agrave; le nom d\'utilisateur que vous d&eacute;sirez utiliser.';
                }
            }
            else
            {
                //Sinon, on dit que lemail nest pas valide
                $form = true;
                $message = 'L\'email que vous avez entr&eacute; n\'est pas valide.';
            }
        }
        else
        {
            //Sinon, on dit que le mot de passe nest pas assez long
            $form = true;
            $message = 'Le mot de passe que vous avez entr&eacute; contien moins de 6 caract&egrave;res.';
        }
    }
    else
    {
        //Sinon, on dit que les mots de passes ne sont pas identiques
        $form = true;
        $message = 'Les mots de passe que vous avez entr&eacute; ne sont pas identiques.';
    }
}
else
{
    $form = true;
}
if($form)
{
    //On affiche un message sil y a lieu
    if(isset($message))
    {
        echo '<div class="message-error">'.$message.'</div>';
    }
    //On affiche le formulaire
?>
<span style="color: #ffffff;"><div class="content">
    <form action="sign_up.php" method="post">
        Veuillez remplir ce formulaire pour vous inscrire:<br />
        <div class="center">
            <label for="username">Nom d'utilisateur</label><input type="text" name="username" value="<?php if(isset($_POST['username'])){echo htmlentities($_POST['username'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
            <label for="password">Mot de passe<span class="small">(6 caract&egrave;res min.)</span></label><input type="password" name="password" /><br />
            <label for="passverif">Mot de passe<span class="small">(v&eacute;rification)</span></label><input type="password" name="passverif" /><br />
            <label for="email">Email</label><input type="text" name="email" value="<?php if(isset($_POST['email'])){echo htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
            <label for="avatar">Image perso<span class="small">(facultatif)</span></label><input type="text" name="avatar" value="<?php if(isset($_POST['avatar'])){echo htmlentities($_POST['avatar'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
            <input type="submit" value="S'inscrire" />
        </div>
    </form>
</div></span>
<?php
}
?>
<center><footer><span style="font-family: arial, helvetica, sans-serif; color: grey;">© 2020 Siteducodeur</span></footer></center>
        <center><footer><p><a href="http://192.168.1.16/web/a-propos.php"><img src="http://192.168.1.16/web/default/images/footer/a-propos.png" alt="" width="61" height="19" /></a><img src="http://192.168.1.16/web/default/images/footer/point.png" alt="" width="16" height="19" /><a href="http://192.168.1.16/web/cgu"><img src="http://192.168.1.16/web/default/images/footer/cgu.png" alt="" width="35" height="19" /></a><img src="http://192.168.1.16/web/default/images/footer/point.png" alt="" width="16" height="19" /><a href="http://192.168.1.16/web/contact"><img src="http://192.168.1.16/web/default/images/footer/contact.png" alt="" width="52" height="19" /></a></p></footer></center>
        <div class="foot"><a href="<?php echo $url_home; ?>">Retour &agrave; l'accueil</a> - <a href="http://192.168.1.16/web">Accueil du site</a></div>
    </body>
</html>

Perso aucun dev sur yt et autres les utilises... pas mĂȘme moi... et la variable, comme elle est dĂ©jĂ  dĂ©fini, tu pourrais la mettre direct dans ta requete.

@Jerem971


Oui je sais bien mais pour le moment dans le basique,

comment pourrais-je faire ?

@CrafterHide

Tu pense que ça sert à rien

du cout je les enlĂšves ?

Hello @Nico19,


Tu ne pourras pas bloquer des membres avec leur IP s'ils utilisent un VPN ou un proxy... 😬

A moins d'avoir un script de dĂ©tection de VPN ou proxy, tes membres en question pourront toujours venir par ces moyens... 😬

@Nico19,


A quoi ça te sers d'échapper les variables?? Ya pas besoins de les échapper pour les mettre dans une requette sql...

Bonsoir @CrafterHide,

Ca ne marche pas, voici les modifications que j'ai effectué


sign_up.php


<?php
error_reporting(0);
?>

<?php
include('config_signup.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
        <link rel="shortcut icon" type="image/x-icon" href="default/favicon.ico" />
        <title>Inscription</title>
    </head>
    <body>
        <div class="header">
            <a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Espace Membre" /></a>
        </div>
<?php
//On verifie que le formulaire a ete envoye
if(isset($_POST['username'], $_POST['password'], $_POST['passverif'], $_POST['email'], $_POST['avatar'], $_SERVER['REMOTE_ADDR']) and $_POST['username']!='')
{
    //On enleve l'echappement si get_magic_quotes_gpc est active
    if(get_magic_quotes_gpc())
    {
        $_POST['username'] = stripslashes($_POST['username']);
        $_POST['password'] = stripslashes($_POST['password']);
        $_POST['passverif'] = stripslashes($_POST['passverif']);
        $_POST['email'] = stripslashes($_POST['email']);
        $_POST['avatar'] = stripslashes($_POST['avatar']);
        $_SERVER['REMOTE_ADDR'] = stripcslashes($_SERVER['REMOTE_ADDR']);
    }
    //On verifie si le mot de passe et celui de la verification sont identiques
    if($_POST['password']==$_POST['passverif'])
    {
        //On verifie si le mot de passe a 6 caracteres ou plus
        if(strlen($_POST['password'])>=6)
        {
            //On verifie si l'email est valide
            if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
            {
                //On echape les variables pour pouvoir les mettre dans une requette SQL
                $username = mysql_real_escape_string($_POST['username']);
                $password = mysql_real_escape_string($_POST['password']);
                $email = mysql_real_escape_string($_POST['email']);
                $avatar = mysql_real_escape_string($_POST['avatar']);
                $ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);
                //On verifie sil ny a pas deja un utilisateur inscrit avec le pseudo choisis
                $dn = mysql_num_rows(mysql_query('select id from users where username="'.$username.'"'));
                if($dn==0)
                {
                    //On recupere le nombre dutilisateurs pour donner un identifiant a lutilisateur actuel
                    $dn2 = mysql_num_rows(mysql_query('select id from users'));
                    $id = $dn2+1;
                    //On enregistre les informations dans la base de donnee
                    if(mysql_query('insert into users(id, username, password, email, avatar, ip, signup_date, ) values ('.$id.', "'.$username.'", "'.$password.'", "'.$email.'", "'.$avatar.'", "'.$ip.'", "'.time().'")'))
                    {
                        //Si ca a fonctionne, on naffiche pas le formulaire
                        $form = false;
?>
<div class="message">Votre inscription à bien été prise en compte, mais votre compte n'est pas encore activé<br />
    <div class="message">Pour ce faire, vous recevrez trĂšs prochainement un mail de confirmation de crĂ©ation<p></p><a href="connexion.php"></a><br />
<a href="connexion.php">Se connecter</a></div>
<?php
                    }
                    else
                    {
                        //Sinon on dit quil y a eu une erreur
                        $form = true;
                        $message = 'Une erreur est survenue lors de l\'inscription.';
                    }
                }
                else
                {
                    //Sinon, on dit que le pseudo voulu est deja pris
                    $form = true;
                    $message = 'Un autre utilisateur utilise d&eacute;j&agrave; le nom d\'utilisateur que vous d&eacute;sirez utiliser.';
                }
            }
            else
            {
                //Sinon, on dit que lemail nest pas valide
                $form = true;
                $message = 'L\'email que vous avez entr&eacute; n\'est pas valide.';
            }
        }
        else
        {
            //Sinon, on dit que le mot de passe nest pas assez long
            $form = true;
            $message = 'Le mot de passe que vous avez entr&eacute; contien moins de 6 caract&egrave;res.';
        }
    }
    else
    {
        //Sinon, on dit que les mots de passes ne sont pas identiques
        $form = true;
        $message = 'Les mots de passe que vous avez entr&eacute; ne sont pas identiques.';
    }
}
else
{
    $form = true;
}
if($form)
{
    //On affiche un message sil y a lieu
    if(isset($message))
    {
        echo '<div class="message-error">'.$message.'</div>';
    }
    //On affiche le formulaire
?>
<span style="color: #ffffff;"><div class="content">
    <form action="sign_up.php" method="post">
        Veuillez remplir ce formulaire pour vous inscrire:<br />
        <div class="center">
            <label for="username">Nom d'utilisateur</label><input type="text" name="username" value="<?php if(isset($_POST['username'])){echo htmlentities($_POST['username'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
            <label for="password">Mot de passe<span class="small">(6 caract&egrave;res min.)</span></label><input type="password" name="password" /><br />
            <label for="passverif">Mot de passe<span class="small">(v&eacute;rification)</span></label><input type="password" name="passverif" /><br />
            <label for="email">Email</label><input type="text" name="email" value="<?php if(isset($_POST['email'])){echo htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
            <label for="avatar">Image perso<span class="small">(facultatif)</span></label><input type="text" name="avatar" value="<?php if(isset($_POST['avatar'])){echo htmlentities($_POST['avatar'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
            <input type="submit" value="S'inscrire" />
        </div>
    </form>
</div></span>
<?php
}
?>
    </body>
</html>


J'ai effectuer les modifications aux lignes 22,32,48 et 57😀

Hey @Nico19,


De 1 , tu ajoute "ip" ( ou le nom que tu veux dans ta BDD ), je pense que tu sauras le faire...


De 2 , tu ajoute une var


$le_nom_que_tu_veux = $_SERVER['REMOTE_ADDR'];


De 3 , tu l'ajoute dans ta requĂȘte


De 4, suis les conseils de @Alexoune001

Bonjour @Alexoune001,

Oui j'ai dĂ©jĂ  commencer Ă  prĂ©parer un message d’information de rĂ©cupĂ©ration de leur IP

Pas de problĂšme la dessus.

@Nico19 : Attention, je tiens Ă  prĂ©venir qu'en rĂ©cupĂ©rant l'IP de tes visiteurs, ton site web doit ĂȘtre 100% sĂ©curisĂ© et tu es dans l'obligation de prĂ©venir tes visiteurs et utilisateurs que leurs adresses IP sont sauvegardĂ©s ;)

Cette pub permet au site de vivre ...
1
2