Modul nur für internen IP-Bereich

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Modul nur für internen IP-Bereich

    Hallo,

    ich möchte, dass ein Modul auf der Homepage nur ausgeführt wird, wenn die IP des Homepage-Besuchers im internen IP-Bereich von 10.10.27.0 bis 10.10.29.255 liegt.
    Über $_SERVER['REMOTE_ADDR'] sollte das ja möglich sein, da es ja auch für Counter eingesetzt wird.
    Ich hoffe Ihr habt eine Lösung für mich könnt mir damit weiterhelfen.
    PHP Code:
    <?php if ($_SERVER['REMOTE_ADDR']=='10.10.27.0 bis 10.10.29.255')
    // das /**Web Cam Module**/ ausführen
    ?>
     
     
    <?php 
    /**Web Cam Module**/ 
    defined'_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
    // parameters 
    ?>
     
    <script language="JavaScript"> 
    <?php if ( $viewType == ) { } ?> 
    <?php if ( $viewType == ) { } ?> 
    </script> 
     
    <?php 
    switch ( $params->get'viewType') ) {/** Use Popup window**/
    ?>
    Last edited by typeA; 24-01-2008, 19:16.

  • #2
    PHP Code:
    if (strpos($_SERVER['REMOTE_ADDR'],"10.10.") !== false
    Liebe Grüße,
    SteKoe!

    PHP Tutorials
    Peter Kropff | Quakenet | Schattenbaum.net

    Comment


    • #3
      Danke für die rasche Antwort.
      Ich fürchte, dass wird jedoch so nicht funktionieren, da es mehrere interne IP-Bereiche gibt und z.B. für 10.10.3x.xx das Modul nicht geladen werden soll.
      Die IP-Bereiche sind nicht komplett aus Netzwerksicht zu betrachten, sondern nach Wohnungen getrennt und jeweils mit eigener NAT-Firewall.

      Comment


      • #4
        Dann leg nen array an und speicher alle erlaubten IPs rein.. oder so?

        PHP Code:
        $allowedIPs = array();
        $allowedIPs "10.10.27.0";

        if(
        in_array($_SERVER['REMOTE_ADDR'],$allowedIPs))
        {
           
        // tu was

        Liebe Grüße,
        SteKoe!

        PHP Tutorials
        Peter Kropff | Quakenet | Schattenbaum.net

        Comment


        • #5
          Wenn ich das richtig verstehe, dann muss ich alle 765 IPs mit
          $allowedIPs = "10.10.27.0";
          $allowedIPs = "10.10.27.1"; u.s.w. definieren.
          Gibt es da keine elegantere Lösung falls sich der IP-Bereich mal ändern sollte?
          also z.B. if ip >= 10.10.27.0 AND <=10.10.29.255

          Comment


          • #6
            rechne die IP in eine Dezimalzahl um, dann haste eine Start- und eine Endzahl
            mit der du die aktuelle IP vergleichen kannst
            TBT

            Die zwei wichtigsten Regeln für eine berufliche Karriere:
            1. Verrate niemals alles was du weißt!


            PHP 2 AllPatrizier II Browsergame

            Comment


            • #7
              Original geschrieben von typeA
              also z.B. if ip >= 10.10.27.0 AND <=10.10.29.255
              ip2long() scheint sich dazu ganz gut zu eignen.

              Comment


              • #8
                PHP Code:
                function allowedIP($checkThisIP)
                {
                    
                $iprange "10.10";
                    
                    for(
                $x 27$x <= 29$x++)
                    {
                        for(
                $y 0$y <= 255$y++)
                        {
                            
                $ip $iprange.".".$x.".".$y;
                            if(
                $ip == $checkThisIP)
                                return 
                true;
                        }
                    }
                    return 
                false;
                }

                var_dump(allowedIP("10.10.26.11")); // FALSE
                var_dump(allowedIP("10.10.27.11")); // TRUE 
                Liebe Grüße,
                SteKoe!

                PHP Tutorials
                Peter Kropff | Quakenet | Schattenbaum.net

                Comment


                • #9
                  lassen sich bei PHP eigentlich Operatoren überschreiben, bzw. ist so
                  ein Feature für die nächsten Releases geplant?

                  Wenn ja könnte man sich ja ne wunderschöne IP Klasse bauen

                  Comment


                  • #10
                    lassen sich bei PHP eigentlich Operatoren überschreiben, bzw. ist so
                    ein Feature für die nächsten Releases geplant?

                    Wenn ja könnte man sich ja ne wunderschöne IP Klasse bauen
                    Das wäre cool, ist meines Wissens aber nicht geplant. Vielleicht wird PHP ja vorher typisiert ^^

                    @stekoe2000: Die Lösung ist viel zu kompliziert. 3DMax und TBT haben eine gute Lösung genannt!

                    Comment


                    • #11
                      Original geschrieben von PHP-Desaster

                      @stekoe2000: Die Lösung ist viel zu kompliziert. 3DMax und TBT haben eine gute Lösung genannt!
                      Jo, kannte die Funktionen nicht, daher...
                      Liebe Grüße,
                      SteKoe!

                      PHP Tutorials
                      Peter Kropff | Quakenet | Schattenbaum.net

                      Comment


                      • #12
                        Allen erstmal vielen Dank für die zahlreichen Antworten.

                        Mit ip2long() scheint mir die Lösung des Problems ein ganzes Stück näher zu kommen.

                        Da alle Rechner hinter einer NAT-Firewall sitzen, liefert z.B.
                        nslookup 10.10.27.1
                        1.27.10.10.in-addr.arpa name = timo.haus1.wh.local.
                        nslookup 10.10.28.2
                        2.28.10.10.in-addr.arpa name = linda.haus1.wh.local.

                        *.haus1.wh.local ist beim internen IP-Bereich also immer identisch.
                        Für jemanden aus einem anderen internen IP-Bereich ergibt sich dann z.B. *.haus3.wh.local.
                        Mit einer Kombination von long2ip() und ip2long() sollte sich ja dann eine Lösung finden lassen.

                        Comment


                        • #13
                          Ich habe den Zugriff auf das Modul für den internen IP-Bereich jetzt hiermit gelöst.

                          <?php
                          $ip1 = $_SERVER['REMOTE_ADDR'];
                          $ip1 = ip2long($ip1);
                          if ($ip1 >= 168xxxxxx && $ip1 <= 168xxxxxx)
                          {
                          defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
                          }
                          else {echo $out = 'Zugriff verweigert';}
                          ?>

                          Zuvor habe ich mir mit
                          <?php
                          $ip1 = 10.10.xx.xx;
                          $ip2 = 10.10.xx.xx;
                          $ip1= long2ip($ip1);
                          $ip2= long2ip($ip2);
                          echo $out = $ip1.'<br>', $ip2;
                          ?>
                          die IPs als Dezimalzahl anzeigen lassen.
                          Danke nochmals für eure Hilfe, ich habe dabei immerhin etwas php gelernt.
                          Last edited by typeA; 09-02-2008, 21:18.

                          Comment


                          • #14
                            PHP Code:
                            $allowedIPs = array();
                            $allowedIPs "10.10.27.0";

                            if(
                            in_array($_SERVER['REMOTE_ADDR'],$allowedIPs))
                            {
                               
                            // tu was

                            @stekoe2000
                            Mit diesem Code passiert aber nicht viel. Wenn PHP gnädig ist, dann gibt's wenigstens ne Meldung von wegen Array to String Conversion. Aber spätestens in_array() wird sich mit einem Error verabschieden...

                            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)

                            Comment


                            • #15
                              Original geschrieben von jahlives
                              @stekoe2000
                              Mit diesem Code passiert aber nicht viel. Wenn PHP gnädig ist, dann gibt's wenigstens ne Meldung von wegen Array to String Conversion. Aber spätestens in_array() wird sich mit einem Error verabschieden...

                              Gruss

                              tobi
                              Der Fehler war absicht *hust*
                              Liebe Grüße,
                              SteKoe!

                              PHP Tutorials
                              Peter Kropff | Quakenet | Schattenbaum.net

                              Comment

                              Working...
                              X