Partage
  • Partager sur Facebook
  • Partager sur Twitter

Détection d'un réseau local

Cas pratique

Sujet résolu
    31 juillet 2012 à 9:18:00

    Bonjour,

    Je gère un petit réseau domestique. J'ai donc un serveur physique à la maison qui s'occupe de toute l'organisation.
    Cependant ce serveur me sert aussi pour publier des sites web.
    Je voudrais donc pouvoir détecter via un script PHP, si je me trouve où non sur le réseau domestique lorsque je vais sur la page http://www.monreseaudomestique.fr et ainsi soit afficher la page de gestion du serveur http://www.monreseaudomestique.fr:8080 si je suis sur le réseau local, soit afficher mes site web http://www.monreseaudomestique.fr:80.

    J'ai donc pensé à vérifier que si les adresses 192.168.0.1 & 192.168.0.99 sont disponibles alors cela signifie que je me trouve sur le réseau local, cependant je ne trouve pas cela très rigoureux.
    En sachant que le serveur Apache se trouve sur le réseau local je me demande si il existe une fonction php qui détecte par un booléen si un utilisateur se trouve sur le réseau local.

    Est-ce que quelqu'un aurait une petite idée pour améliorer tout ça ?!

    (PS : interdire l'accès via un .htaccess ou les paramètres du serveur Apache pour que la connexion ne se fasse que en local ne m'intéresse pas trop car j'aimerai ajouter une variable superglobale pour forcer l'apparition de la page de gestion du réseau en sachant que je n'interdit à personne de s'y connecter dans la mesure où il connait l'adresse de gestion et que cela n'induit pas de problème de sécurité, car il ne s'agit que d'une interface résumant les différents liens et chemins sur le réseau.)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      31 juillet 2012 à 11:04:15

      Vérifie *ton* ip, pas les ip disponibles. ;)
      • Partager sur Facebook
      • Partager sur Twitter
        2 août 2012 à 0:46:44

        En la comparant à quoi ça n'a pas de sens non ?
        Si je vérifie mon ip en sachant qu'elle est non statique elle va changer si je l'a compare à la fonction REMOTE_ADDR impossible
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          2 août 2012 à 1:23:33

          Pas ton IP WAN, ton IP LAN...

          J'ai déjà été confronté à une situation similaire à la tienne : je devais m'assurer qu'un bout de script ne soit exécuté que s'il était visité par la machine sur laquelle il se trouvait.
          Ma solution : vérifier l'IP du visiteur.

          <?php
          if(in_array(get_ip_address(), array('127.0.0.1', '::1'))) {
          //blabla
          }
          

          Ce que tu dois faire est similaire.
          Vérifier si l'IP du visiteur match la pattern 192.168.[0-9]{1,3}.[0-9]{1,3}
          Et voilà. Tu sauras si tu es connecté à ton machin depuis le réseau local ou depuis Internet.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            2 août 2012 à 1:40:02

            Les ip commençant de 0 à 10 (inclus) sont réservées aux PC sur le même réseau.

            Donc comme l'a dit victor tu prends l'ip et si les premiers chiffres son compris entre 0 & 10 tu fais ton truc en t'incluant évidemment (127.0.0.1 si c'est sur ta machine).
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              2 août 2012 à 7:27:15

              @hotgeart: Sauf qu'en l'occurence, c'est 192.168.*.*, mais c'est pareil…
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                2 août 2012 à 11:33:21

                Non quand je crée un serv sur un réseau local l'ip est 5.72.71.29 tu auras beau mettre 192.168.x tu arriveras jamais a me rejoindre
                • Partager sur Facebook
                • Partager sur Twitter
                  5 août 2012 à 20:30:56

                  Bon alors j'ai utilisé la commande fopen pour vérifier si le lien est mort ou non, car la variable superglobale REMOTE_ADDR ne correspond pas avec ce que je voulais finalement et la commande get_ip_address ne fonctionne pas avec ma version du php semblerai.

                  Merci :-)
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    5 août 2012 à 20:36:25

                    C'est surtout que get_ip_address() n'existe pas :p c'est une function que tu dois créer toi même
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      5 août 2012 à 20:42:20

                      get_ip_address() c'est ma fonction pour trouver l'IP de l'utilisateur, sachant qu'il n'existe pas de fonction PHP ou de variable PHP utilisable pour ce faire.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        5 août 2012 à 22:25:23

                        Citation : victor

                        get_ip_address() c'est ma fonction pour trouver l'IP de l'utilisateur, sachant qu'il n'existe pas de fonction PHP ou de variable PHP utilisable pour ce faire.



                        Ah mince, c'était pas clair d'autant plus que $_SERVER["REMOTE_ADDR"] existe non ? ^^"
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          5 août 2012 à 22:29:10

                          Non mais bon un coup de doc ne fait jamais de mal.
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            5 août 2012 à 22:36:09

                            Citation : KzL

                            Citation : victor

                            get_ip_address() c'est ma fonction pour trouver l'IP de l'utilisateur, sachant qu'il n'existe pas de fonction PHP ou de variable PHP utilisable pour ce faire.



                            C'était pas clair d'autant plus que $_SERVER["REMOTE_ADDR"] existe non ? ^^"


                            Et si le mec est derrière un proxy ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              5 août 2012 à 22:47:59

                              Citation : victor

                              Citation : KzL

                              Citation : victor

                              get_ip_address() c'est ma fonction pour trouver l'IP de l'utilisateur, sachant qu'il n'existe pas de fonction PHP ou de variable PHP utilisable pour ce faire.



                              C'était pas clair d'autant plus que $_SERVER["REMOTE_ADDR"] existe non ? ^^"


                              Et si le mec est derrière un proxy ?



                              C'est pas important à priori, puisque si qqn se trouve derrière un proxy déjà c'est pas quelqu'un de chez moi, donc il saute. Et si t'es sur mon réseau local tu n'es pas derrière un proxy et dans le pire des cas si je suis pas chez moi, je me connecte à mon serveur pptp et donc là je récupère mon ip à la maison qui prouve bien que je suis chez moi à priori.

                              J'ai donc préféré utiliser la fonction
                              @fopen("http://".$_SERVER["SERVER_ADDR"].":5000/", 'r');
                              
                              pour tester si la page existe auquel cas et bien c'est que je suis sur mon réseau local, je ne cherche pas plus loin pour ce que je veux faire, car au pire si la page existe chez quelqu'un d'autre et bien il est redirigé chez lui en local avec la fonction
                              header("Location: http://".$_SERVER["SERVER_ADDR"].":5000/;");
                              


                              Je pense que c'est correct, non ? :-)
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                5 août 2012 à 23:07:25

                                C'est marrant. Tu poses une question, je te donne une solution, tu demandes des précisions, je te donne des précisions, hotgeart confirme ma solution, et maintenant tu viens dire que tu fais autrement et tu veux savoir si ta solution est correcte.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  5 août 2012 à 23:18:43

                                  Je vous ai exposé ce que je veux voulais faire et comment je pensais faire.
                                  Tu m'as dit comment tu pensais faire, on a discuté.
                                  J'ai essayé de faire avec ce que vous m'avez proposé.
                                  J'ai réfléchi de mon côté et j'explique comment j'ai fais, je pense qu'un forum c'est fait pour ça : "discuter" et peut-être confronter les idées à un problème posé par la même occasion, car meme si mon probllème est résolu c'est toujours intéressant je trouve, enfin question de point de vue, je suppose du coup.
                                  Mais au moins ça aidera peut-etre quelqu'un à réfléchir si ce quelqu'un cherche une réponse à quelque chose de similaire.
                                  Je vois pas le mal qui a, pcq au final, la question du proxy n'avait pas été posé et ça amène des détails.

                                  Franchement je te comprends pas.. ^^"
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    5 août 2012 à 23:24:18

                                    A quoi ça sert de tester? Redirige le directement vers $_SERVER["SERVER_ADDR"].
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      5 août 2012 à 23:30:49

                                      $_SERVER["SERVER_ADDR"] renvoie l'ip local de mon serveur à savoir une ip de la forme 192.168.0.X.
                                      Si je ne suis pas sur le réseau local elle n'est pas accessible, auquel cas, ça m'embête à cause de mon site que je veux laisser accessible pour tout autre visiteur.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Anonyme
                                        5 août 2012 à 23:49:32

                                        Oui, mais je ne comprend pas si tu test $_SERVER["SERVER_ADDR"] il y a que toi sur la machine où il y a le script qui pourra y aller. Donc même les membres de ton réseaux local ne pourront pas y accéder. Tu veux quand même que les autres PC en local peuvent y accéder non? Ou alors j'ai pas compris :p
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          5 août 2012 à 23:57:14

                                          Citation : hotgeart

                                          [..] si tu test $_SERVER["SERVER_ADDR"] il y a que toi sur la machine où il y a le script qui pourra y aller.



                                          Pourquoi pense-tu que $_SERVER["SERVER_ADDR"] n'est pas accessible ?
                                          Toutes les personnes de mon réseau local peuvent accéder à l'adresse et le test répondra vrai pour toute personne sur le réseau local (ou le réseau vpn) et si il répond faux alors ça redirige le visiteur sur mon site web visible de tous.
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Détection d'un réseau local

                                          × 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