Holger: IP - Block auslesen und bestimmte sperren - Wie?

Hallo,

also ich will bestimmte User von meinem Forum weghalten, d.h. jemand hat eine bestimmte IP und soll auf eine andere Seite geleitet werden. Also ich will ganze IP-Blocks sperren d.h. 80.142.xxx.xxx, also jeder User mit der 80.142 IP soll auf eine ander Seite umgeleitet werden. Wie kann ich das anstellen, dass das funktioniert?
Hoffe auf Antworten! :)

Danke!

Micha

  1. Micha

    LOL, ich bin Holger. "Tschüß Micha" habe ich gerade zu jemanden am Telefon gesagt und schreibe dabei auch noch Micha. :-(

  2. Hallo,

    also ich will bestimmte User von meinem Forum weghalten, d.h. jemand hat eine bestimmte IP und soll auf eine andere Seite geleitet werden.

    Das ist eigentlich nur brauchbar, wenn der "boese" Benutzer
    immer den gleichen Provider benutzt und dort auch eine
    statische IP-Adresse hat.

    Also ich will ganze IP-Blocks sperren d.h. 80.142.xxx.xxx, also jeder User mit der 80.142 IP soll auf eine ander Seite umgeleitet werden.

    Damit sperrst Du vermutlich sehr viele "Unschuldige".
    Wenn Du das in Kauf nehmen willst...

    http://www.dclp-faq.de/q/q-code-ip.html

    $ip = getenv('REMOTE_ADDR');
    oder
    $ip = $_SERVER['REMOTE_ADDR'];

    Dann mit Stringfunktionen pruefen, ob der Anfang
    der IP-Adresse mit Deinem Muster uebereinstimmt.

    Gruesse,

    Thomas

    --
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
    Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
    1. Hallo Thomas,

      Damit sperrst Du vermutlich sehr viele "Unschuldige".
      Wenn Du das in Kauf nehmen willst...

      In Moment gibt es laut Serverlog nur diesen einen User mit  80.142

      Ich will diese IP-Block nur mal für zwei Wochen sperren.

      http://www.dclp-faq.de/q/q-code-ip.html

      $ip = getenv('REMOTE_ADDR');
      oder
      $ip = $_SERVER['REMOTE_ADDR'];

      Dann mit Stringfunktionen pruefen, ob der Anfang
      der IP-Adresse mit Deinem Muster uebereinstimmt.

      Ich habe mal das eben geschrieben:

      Ich habe immer 80.133.xx.xx

      <?
      $ip_address = $_SERVER['REMOTE_ADDR'];

      $tok = strtok ($ip_address,".");
      $m=1;
      while ($tok)
      {
        $byte[$m]=$tok;
        $tok = strtok (".");
        $m++;
      }

      if ($byte[1]=="80.132") echo "Zugriff erlaubt";
      if ($byte[1]!="80.132") echo "Zugriff nicht erlaubt";
      ?>

      Das hilft mir leider nicht viel, ich komme immer auf "Zugriff nicht erlaubt". Egal ob ich meine IP eintrage oder nicht. Ist da irgendwas falsch in diesem Script?

      Danke, Holger!

      1. Hallo,

        Ich habe immer 80.133.xx.xx

        Und im Skript vergleichst Du auf 80.132...

        if ($byte[1]=="80.132") echo "Zugriff erlaubt";
        if ($byte[1]!="80.132") echo "Zugriff nicht erlaubt";

        Was steht denn in $byte[1]?
        Lass Dir den Wert anzeigen, bevor Du ihn in
        der IF-Bedingung verwendest!

        Gruesse,

        Thomas

        --
        Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
        Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
        Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
        1. Was steht denn in $byte[1]?

          Hmmm, da kommt nur 80 raus. Wo hole ich die 133 noch her? *grübel*

          1. Hallo,

            Hmmm, da kommt nur 80 raus. Wo hole ich die 133 noch her? *grübel*

            Naja, beschaeftige Dich mal etwas intensiver mit den String-Funktionen
            http://www.php.net/manual/de/ref.strings.php
            Insbesondere das von Dir benutzte strtok() oder das
            verwandte explode()/implode() duerften schon ein
            guter Ansatz sein. Wenn man sie richtig einsetzt.

            Vielleicht auch interessant: Strings verknuepfen:
            http://www.php.net/manual/de/language.operators.string.php

            Gruesse,

            Thomas

            --
            Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
            Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
            Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
            1. Hallo Thomas,

              OK, so funzt es...

              <?
              $ip_address = $_SERVER['REMOTE_ADDR'];

              $tok = strtok ($ip_address,".");
              $m=1;
              while ($tok)
              {
                $byte[$m]=$tok;
                $tok = strtok (".");
                $m++;
              }

              echo "$ip_address <br>";

              echo "$byte[1] <br>";

              echo "$byte[2] <br>";

              $ipp = $byte[1].$byte[2];

              echo "$ipp <br>";

              if ($ipp=="80133") echo "Zugriff nicht erlaubt";
              if ($ipp!="80133") echo "Zugriff erlaubt";
              ?>

              1. Moin,

                OK, so funzt es...

                $ipp = $byte[1].$byte[2];

                if ($ipp=="80133") echo "Zugriff nicht erlaubt";

                Aber eher zufällig. Was wäre wenn du die IP-Addresse 12.3... sperren wolltest? Und nun überlege dir was passiert wenn jemand mit 1.23... kommt.
                In $_SERVER['REMOTE_ADDR'] hast du doch schon die ganze Addresse. Warum nimmst du sie auseinander um sie dann falsch zusammenzusetzen? Gefällt dir irgendwas an preg_match() bzw. strpos() nicht?

                --
                Henryk Plötz
                Grüße aus Berlin
                ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
                ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~