Partage
  • Partager sur Facebook
  • Partager sur Twitter

page de connexion que si adresse visiteur inconnue

    30 avril 2021 à 20:16:36

    bonjour je veux faire une page ou les visiteurs doivent donner des informations (y compris leur adresse ip important pour la suite) qui sont enregistrés dans une base de donnés.

    à la prochaine visite du visiteur on va regarder si son adresse ip existe dans la DB et si oui on ne lui montre pas la page d'enregistrement.

    j'ai déjà un script qui n'affiche pas d'erreurs mais mon adresse ip n'existe pas dans la DB et il n'affiche pas la page d'enregistrement mais la page 'résultat ou cible'

    voici le code j'espère que vous pourrez m'aider merci.

    <?php
    setcookie( 'ip', $_SERVER['REMOTE_ADDR'], time()+ 365*24*3600, null, null, false, true,);
    session_start();
    $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
    $fichier=fopen('compteur.txt','r+');
    
    $nombredevues=fgets($fichier);
    $nombredevues += 1;
    fseek($fichier,0);
    fputs($fichier,$nombredevues);
    
    $visiteurip=$_COOKIE['ip'];
    
    fclose($fichier);
    $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', 'root', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    $requet=$bdd->query('SELECT ip FROM visiteur');
    ?>
        <?php
        if (isset($_REQUEST['ip']) AND $visiteurip == $_REQUEST['ip'])
        {
            echo 'merci';
        }
    else
        {
    ?>
    <!DOCTYPE html>
    <html lang="fr">
    <head>
        <meta http-equiv="Content-Type" content="text/html/img; charset=utf-8"><link rel="stylesheet" href="connectgroupe1.css"><link rel="icon" type="image/png" href=".png">
    </head>
    <title>inscription</title>
        <body id="body">
        <div id="container">
            <header>
                <div id="header">
                    <h1 id="insc">REGISTER</h1>
                </div>
            </header>
        <div id="form">
        <h1 id="rvi">Renseignez vos infos</h1>
        <div class="ligne3"></div>
            <form action="sessiongroupe1.php" method="POST" id="form2">
                    
                    <label for="copmptersx"></label>
                    <input class="value" type="text" name="compteinsta" id="compteinsta" placeholder="compte instagram" required>
                    <div class="ligne2"></div>
                    <input class="value" type="email" name="email" id="email" placeholder="email" required>
                    <div class="ligne2"></div>
                    <input class="value" type="tel" name="tel" id="tel" placeholder="n° telephone" required>
                    <div class="ligne2"></div>
                    <label for="pays"></label>
                    <select class="value" name="pays" id="pays" required>
                        <option value="groupe1">groupe1</option>
                        <option value="groupe2">groupe2</option>
                        <option value="aucun">aucun</option>
                        <option value="none" selected disabled>groupe</option>
            
                    </select>
                    <div class="ligne2"></div>
                    <input type="submit" class="button2" value="acceder">
            </form>
        </div>
    <footer id="footer1">
        <div class="ligne"></div>
        <h1 id="rns">retrouvez nous sur nos réseaux sociaux</h1>
        <a href="https://facebook.com/"><img class="element" src="1.png" alt="facebook"></a>
        <a href="https://instagram.com/"><img class="element" src="2.png" alt="instagram"></a>
        <a href="https://twitter.com/"><img class="element" src="5.png" alt="twitter"></a>
        <a href="adminlog.php"><img class='element' src="6.png" alt="adminpass"></a>
        <h1 id="madeby">made by esprit_drone</h1>
    </footer>
        </div>
        </body>
    </html>
    <?php
        }
    ?>
    *
    {
        user-select: none;
        font-family: helvetica;
    }
    #container
    {
        display: flex;
        flex-direction: column;
        flex-wrap: wrap;
        justify-content: space-between;
        width: 100%;
        height: 100%;
        margin: 0px;
        margin: auto;
    }
    #body
    {
        margin: 0px;
    }
    #header
    {
        display: flex;
        flex-wrap: wrap;
        flex-direction: row;
        justify-content: space-between;
        align-items: center;
        margin: 0px;
    }
    .ligne
    {
        height: 1px;
        width: 100%;
        background-color: rgb(87, 87, 87);
    }
    #insc
    {
        color:#808080;
        font-size:25px;
        text-decoration:none;
        font-weight: 500;
        margin-left: 10px;
    }
    #myButton {
        height: 20px;
    	-moz-box-shadow: 0px 0px 18px 3px #ababab;
    	-webkit-box-shadow: 0px 0px 18px 3px #ababab;
    	box-shadow: 0px 0px 18px 3px #ababab;
    	background-color:#ffffff;
    	-webkit-border-radius:42px;
    	-moz-border-radius:42px;
    	border-radius:42px;
    	display:inline-block;
    	color:#808080;
        text-align: center;
    	font-size:17px;
        padding: 10px 15px;
    	text-decoration:none;
        margin-right: 10px;
    }
    #form
    {
        display: flex;
        flex-wrap: wrap;
        flex-direction: column;
        align-items: center;
        margin-top: 150px;
        flex: 1;
    }
    #form2
    {
        display: flex;
        flex-wrap: wrap;
        flex-direction: column;
        align-items: center;
    }
    #rvi
    {
        font-weight:500;
        font-size: 35px;
        color:#808080;
    }
    .value
    {
        border: none;
        width: 400px;
        height: 75px;
        
    
    }
    .value::selection
    {
        border: none;
    }
    #okbtn
    {
        border-radius: 0px;
        border: 0px;
        background-color: rgb(51, 51, 51);
        
    }
    .button2
    {
    	box-shadow: 0px 0px 20px 2px #adadad;
    	background-color:#292929;
    	border-radius:42px;
    	display:inline-block;
    	color:#ffffff;
    	font-family:Arial;
    	font-size:20px;
    	padding:15px 16px;
    	text-decoration:none;
        margin-top: 20px;
        cursor:pointer;
        
    }
    .button2:hover {
    	background-color:#000000;
    }
    .ligne2
    {
        width: 400px;
        height: 2px;
        background-color: black;
    }
    .ligne3
    {
        width: 400px;
        height: 1px;
        background-color:#808080;
    }
    #esp
    {
        font-weight: 500;
        font-size: 20px;
    
    }
    #footer1
    {
        margin-top: 230px;
        display: flex;
        flex-wrap: wrap;
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    
    }
    .element
    {
        width: 50%;
        margin-top: 5px;
    }
    #rns
    {
        font-size: 17px;
        margin-left: 10px;
    }
    #madeby
    {
        font-size: 10px;
        font-weight: 500;
        margin-right: 10px;
    }
    #mv
    {
        font-size: 15px;
        color: #808080;
        text-decoration: none;
    }
    #adminlog
    {
        text-decoration: none;
    }

    et l' image de la DB

    l'adresse ip est un exemple


    -
    Edité par Nicolas Hesse 30 avril 2021 à 20:17:48

    • Partager sur Facebook
    • Partager sur Twitter
      30 avril 2021 à 20:23:09

      Bonjour,

      La tu confonds $_REQUEST qui regroupe $_POST et $_GET avec $requet qui est le PDOSTatement de ta requête

      Il manque le fetch a minima et encore ça sera faux

      Ta requête doit se transformer en requête préparer avec une condition (WHERE) sur l'ip afin de retrouver se dernier dans la BDD

      • Partager sur Facebook
      • Partager sur Twitter
        30 avril 2021 à 20:37:03

        <?php
        session_start();
        $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
        $visiteurip=$_SERVER['REMOTE_ADDR'];
        $fichier=fopen('compteur.txt','r+');
        
        
        $nombredevues=fgets($fichier);
        $nombredevues += 1;
        fseek($fichier,0);
        fputs($fichier,$nombredevues);
        
        fclose($fichier);
        $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', 'root', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
        $requet=$bdd->prepare('SELECT ip FROM visiteur WHERE ip = :ip');
        $requet->execute(array('ip' => $visiteurip));
        ?>
            <?php
            if (isset($requet['ip']) AND $visiteurip == $requet['ip'])
            {
                echo 'merci';
            }
        else
            {
        ?>

        est-ce mieux ?

        • Partager sur Facebook
        • Partager sur Twitter
          30 avril 2021 à 20:40:28

          Aurélien.C a écrit:

          il manque toujours le fetch

          je continue ici 

          <?php
          $visiteurip=$_SERVER['REMOTE_ADDR'];
          
          $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', 'root', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
          $requet=$bdd->prepare('SELECT ip FROM visiteur WHERE ip = :ip');
          while ($donnees = $reponse->fetch())
          $requet->execute(array('ip' => $visiteurip));
          ?>
              <?php
              if (isset($requet['ip']) AND $visiteurip == $requet['ip'])
              {
                  echo 'merci';
              }
          else
              {
          ?>



          -
          Edité par Nicolas Hesse 30 avril 2021 à 20:46:08

          • Partager sur Facebook
          • Partager sur Twitter
            30 avril 2021 à 20:51:06

            alors tu as quoi comme erreur ?

            Tu es obliger d'avoir une erreur, si ce n'est pas le cas, c'est qu'elle ne sont pas activés (cf FAQ PHP)

            • Partager sur Facebook
            • Partager sur Twitter
              30 avril 2021 à 20:53:22

              pas d'erreurs mais pas de résultat

              • Partager sur Facebook
              • Partager sur Twitter
                30 avril 2021 à 20:53:43

                Aurélien.C a écrit:

                alors tu as quoi comme erreur ?

                Tu es obliger d'avoir une erreur, si ce n'est pas le cas, c'est qu'elle ne sont pas activés (cf FAQ PHP)



                • Partager sur Facebook
                • Partager sur Twitter
                  30 avril 2021 à 20:53:47

                  <?php
                  $visiteurip=$_SERVER['REMOTE_ADDR'];
                  $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', 'root', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                  $reponse=$bdd->prepare('SELECT ip FROM visiteur WHERE ip = :ip');
                  while ($donnees = $reponse->fetch())
                  $requet->execute(array('ip' => $visiteurip));
                  ?>
                      <?php
                      if (isset($requet['ip']) AND $visiteurip == $requet['ip'])
                      {
                          echo 'merci';
                      }
                  else
                      {
                  ?>
                  avec ce code
                  • Partager sur Facebook
                  • Partager sur Twitter
                    30 avril 2021 à 20:54:14

                    Aurélien.C a écrit:

                    Aurélien.C a écrit:

                    alors tu as quoi comme erreur ?

                    Tu es obliger d'avoir une erreur, si ce n'est pas le cas, c'est qu'elle ne sont pas activés (cf FAQ PHP)



                    je t'invite a revoir le cours sur les requêtes et leur exécution

                    -
                    Edité par Aurélien10! 30 avril 2021 à 20:54:44

                    • Partager sur Facebook
                    • Partager sur Twitter
                      30 avril 2021 à 20:54:34

                      ttout fonctionne c'est magnifique merci beaucoup (et merci au cours)
                      n'hésite pas a me dire si il reste des erreurs
                      bonne soirée aurélien
                      <?php  
                          ($ipvisiteur=$_SERVER['REMOTE_ADDR']);
                          $bbd= new PDO ('mysql:host=localhost;dbname=test','root','root',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                          $requete=$bbd-> prepare('SELECT * FROM visiteur WHERE ip=?');
                          $requete->execute(array($ipvisiteur));
                          while ($donnes = $requete->fetch())
                          $ipverification=$donnes['ip'];
                          if (isset($ipverification) AND  $ipverification==$ipvisiteur)
                          {
                              echo 'merci';
                          }
                      else
                          {
                      ?>
                      <!DOCTYPE html>
                      <html lang="fr">
                      <head>
                          <meta http-equiv="Content-Type" content="text/html/img; charset=utf-8"><link rel="stylesheet" href="connectgroupe1.css"><link rel="icon" type="image/png" href=".png">
                      </head>
                      <title>inscription</title>
                          <body id="body">
                          <div id="container">
                              <header>
                                  <div id="header">
                                      <h1 id="insc">REGISTER</h1>
                                  </div>
                              </header>
                          <div id="form">
                          <h1 id="rvi">Renseignez vos infos</h1>
                          <div class="ligne3"></div>
                              <form action="sessiongroupe1.php" method="POST" id="form2">
                                      
                                      <label for="copmptersx"></label>
                                      <input class="value" type="text" name="compteinsta" id="compteinsta" placeholder="compte instagram" required>
                                      <div class="ligne2"></div>
                                      <input class="value" type="email" name="email" id="email" placeholder="email" required>
                                      <div class="ligne2"></div>
                                      <input class="value" type="tel" name="tel" id="tel" placeholder="n° telephone" required>
                                      <div class="ligne2"></div>
                                      <label for="pays"></label>
                                      <select class="value" name="pays" id="pays" required>
                                          <option value="groupe1">groupe1</option>
                                          <option value="groupe2">groupe2</option>
                                          <option value="aucun">aucun</option>
                                          <option value="none" selected disabled>groupe</option>
                              
                                      </select>
                                      <div class="ligne2"></div>
                                      <input type="submit" class="button2" value="acceder">
                              </form>
                          </div>
                      <footer id="footer1">
                          <div class="ligne"></div>
                          <h1 id="rns">retrouvez nous sur nos réseaux sociaux</h1>
                          <a href="https://facebook.com/"><img class="element" src="1.png" alt="facebook"></a>
                          <a href="https://instagram.com/"><img class="element" src="2.png" alt="instagram"></a>
                          <a href="https://twitter.com/"><img class="element" src="5.png" alt="twitter"></a>
                          <a href="adminlog.php"><img class='element' src="6.png" alt="adminpass"></a>
                          <h1 id="madeby">made by esprit_drone</h1>
                      </footer>
                          </div>
                          </body>
                      </html>
                      <?php
                          }
                      ?>
                       

                      -
                      Edité par Nicolas Hesse 30 avril 2021 à 23:21:33

                      • Partager sur Facebook
                      • Partager sur Twitter
                        1 mai 2021 à 12:13:50

                        Bonjour,

                        Tu es conscient que se baser actuellement sur une IP est des plus risqué:

                        • Peu de FAI permettent une IP fixe
                        • Connexion wifi gratuite (TGV, Magasin, Fasfood,...) permettent des connexions gratuites
                        • Téléphone avec partage de connexion
                        • j'en oubli certainement
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Merci de signaler votre sujet résolu, cela nous évite des pages de lecture inutile pour arriver au bout de 15 réponses sur la dernière qui dit "merci problème résolut!"
                          1 mai 2021 à 12:27:13

                          le while est inutile car ton ip est unique donc ta requête n'est censé ne retourné qu'un enregistrement
                          • Partager sur Facebook
                          • Partager sur Twitter
                            4 mai 2021 à 21:16:21

                            merci de me donner plus d'infos la dessus, pour le moment c'est pas un contenu très important donc si quelqu'un le vois en se connectant depuis un partage de co c'est pas très grave c'est vrai que pour les wifi publics c'est plus compliquer puisque plus de personnes peuvent y avoir accès se qui me dérange un peu plus mais je ne veux pas forcer les gens a se connecter a chaque fois puisque même moi en tant qu'utilisateur je trouve l'action contraignante donc pour cette fois sa devrais suffire, mais si tu a des solutions qui permettent de faire la même chose de façon plus sécurisée je prends avec plaisir ;)

                            merci pour ta réponse

                            pour le while message bien reçu j'vais m'en occuper merci

                            • Partager sur Facebook
                            • Partager sur Twitter
                              8 mai 2021 à 18:30:41

                              Re,

                              Regardes les systèmes avec cookies, mais ne fonctionnera pas chez un user comme moi qui ne garde rien après la navigation.

                              Le meilleur moyen est de ne pas faire le système de connexion sur la page d'accueil, de mettre un simple lien via un bouton ou l'utilisateur va de lui même choisir de se connecter s'il dispose d'un compte.

                              Pour le problème de ton IP vérifie si tu es en IPV4 ou en IPV6 il faut intégrer maintenant les deux normes dans l'enregistrement des IP.

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Merci de signaler votre sujet résolu, cela nous évite des pages de lecture inutile pour arriver au bout de 15 réponses sur la dernière qui dit "merci problème résolut!"
                                12 mai 2021 à 20:50:36

                                pour le moment j'ai les deux je te fais une liste d'exemples avec des ip de ma db modifiés 

                                38.142.169.200

                                et 80.22.204.175

                                j'ai les deux formats

                                • Partager sur Facebook
                                • Partager sur Twitter

                                page de connexion que si adresse visiteur inconnue

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown