Überprüfen ob IP in bestimmtem IP Bereich liegt

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Überprüfen ob IP in bestimmtem IP Bereich liegt

    Hallo,

    ich bin noch ziemlicher Anfänger und habe folgendes Problem:

    Wie kann ich überprüfen, ob eine IP in einem bestimmten IP Bereich liegt? Dabei sollte man für den IP-Bereich Start-IP und End-IP festlegen können. Kommt nun ein Surfer überprüft das Skript, ob die IP des Surfers im festgelegten Bereich liegt. Falls ja, gibt es z.B. Hallo aus, ansonsten nichts.

    Beispiel IP-Bereich:
    85.74.60.00 - 85.74.60.123
    Surfer-IP: 85.74.60.110
    --> Ausgabe "Hallo"

    Beipiel 2:
    Surfer-IP: 85.74.60.124
    --> keine Ausgabe

    Mir geht es speziell um die Überprüfung, ob die IP in einem Bereich drin liegt, den Rest müßte ich selbst schaffen.

    Kann mir bitte jemand helfen? Wäre supernett.

    MfG
    Kai

  • #2
    explode() nach punkten plus ein wenig vergleichsoperatoren.

    Kommentar


    • #3
      Definiere den Bereich der gültig ist.
      Verwende $_SERVER['REMOTE_ADDR'] und die IP festzustellen.
      Prüfe ob die IP im Bereich liegt oder ned.

      Gruss

      tobi
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        Danke, für das schnelle Posting.

        Das mit der Ip auslesen ist mir klar.
        Wie soll ich jedoch überprüfen, ob die IP im Bereich liegt?? Das ist das eigtnliche Problem

        Kommentar


        • #5
          muss ich mich wiederholen?

          Kommentar


          • #6
            Sorry, aber ich bin Anfänger und weiß deshalb nicht wie ich das umsetzen soll :-(

            Kommentar


            • #7
              auch anfänger dürfen google benutzen.

              und sie kennen
              www.schattenbaum.net
              www.php-faq.de
              www.php.net (!)
              http://tut.php-q.net

              Kommentar


              • #8
                Hab ich...
                Da konnt ich leider kein beispiel finden, dass mit IPs irgendwie was ähnliches macht, deshalb bin ich hier gelandet.

                Kommentar


                • #9
                  IP Bereich in einen Array packen und einfach abfragen ob die IP des Users im Array vorhanden ist.
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    k00b0ld: schlecht gesucht? wenn ich "explode php" eingebe kommen bei mir ganz viele seiten, wo klar erklärt wird, wozu explode() gut ist. die 4 links geben dir die grundlagen dazu.

                    jahlives: kann ich mir kaum vorstellen - wie soll das gehen? oder willst du ein 4-dimensionales array anlegen?

                    Kommentar


                    • #11
                      @penizilin
                      kann ich mir kaum vorstellen - wie soll das gehen? oder willst du ein 4-dimensionales array anlegen?
                      Pro Schlüssel eine IP, sollte doch funzen oder ned ?
                      Klar man muss alle einzeln ins Array füllen. Ist vielleicht nicht die eleganteste Methode, aber gehen sollte das.

                      Gruss

                      tobi
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        au. das macht ja 2^8 elemente bei einer eingrenzung auf den letzten teil und 2^16 auf die letzten beiden. weißt du, was das für ein unnötiger ressourcen und performance verlust ist?

                        warum nicht die ip als string und anschließend als 4 ganze zahlen behandeln? würd evtl. sogar mit nem regexp gehen.

                        Kommentar


                        • #13
                          PHP-Code:
                            function ip_to_int($ip) {
                              
                          $parts explode('.'$ip);
                              for (
                          $i=0$value=0$i<4$i++)
                                
                          $value += $parts[$i] * pow(256$i);
                              return 
                          $value;
                            }

                            function 
                          is_in_ip_range($from$till$ip) {
                              return (
                          ip_to_int($ip) >= ip_to_int($from) && ip_to_int($ip) <= ip_to_int($till));
                            }
                            
                            
                          var_dump(is_in_ip_range('85.74.60.0''85.74.60.123''85.74.60.110'));
                            
                          var_dump(is_in_ip_range('85.74.60.0''85.74.60.123''85.74.60.124')); 
                          Die Zeit hat ihre Kinder längst gefressen

                          Kommentar


                          • #14
                            Meine erste Version.
                            Danke für die Hilfe zur Selbsthilfe :-)
                            PHP-Code:
                            <?php

                            $ip
                            =getenv("REMOTE_ADDR");
                            $iprange ="85.74.60.0";

                            $iprangeblock explode("."$iprange);
                            $ipblock explode("."$ip);

                            if (
                            $iprangeblock[0]== $ipblock[0] && $iprangeblock[1]== $ipblock[1] && $iprangeblock[2]== $ipblock[2] && $iprangeblock[3] <= $ipblock[3] && $ipblock[3] <= "255")
                            {
                            echo 
                            "Hallo";
                            }

                            ?>
                            Zuletzt geändert von k00b0ld; 24.02.2005, 13:46.

                            Kommentar


                            • #15
                              1. beachten
                              2. keine angst, die wird schon nicht größer als 255 sein, die letzte zahl
                              3. 255 ist eine zahl und kein string

                              Kommentar

                              Lädt...
                              X