IP Sperre

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

  • IP Sperre

    Hi,

    ich möchte in einem Formular auf meiner Homepage eine IP Sperre einbauen.

    Ich hab mir das ganz einfach gedacht.

    Sobald jemand dieses Formular abschickt wird seine IP in eine csv datei gespeichert.

    bevor dies aber gespeichert wird vergleicht das script seine ip mit jeder ip die im array, das mit den daten aus der csv datei gefüllt ist.

    je nachdem ob diese ip dann schon vorhanden ist oder nicht wird dann das abschicken zugelassen oder nicht.

    soweit so gut, ich hab das jz mal programmiert, aber jetzt ist das problem, dass nur der erste der das formular abschickt, gesperrt wird.

    wenn danach ein zweiter mit einer anderen ip das formular abschicken will geht das so oft er will.

    hier mein code
    PHP-Code:
         $bol 0;
         
    $ip $REMOTE_ADDR;
         
    $ipPath "IP.csv";
         
    $fpIP fopen($ipPath,"r");
         
    $max count($array);
         
    $array fgetcsv($fpIP,100,",");

         for(
    $i=0$i $max$i++)
         {
              if(
    $array[$i] == $ip)
              {
                  
    $bol 1;
                  break;
              }
              else
              {
                  
    $bol 0;
                  break;
              }
         } 
    (ist natürlich nur ein teil des codes, also der teil des codes, der die ip adressen vergleicht und dann je nachdem die variable $bol verändert)

    die ip adressen stehen in der csv datei korrekt, durch einen beistrich getrennt

    IP1,IP2,IP3, .....

    hoffe ihr könnt mir helfen

    lg

  • #2
    Lass dir mal $max ausgeben, sowohl da wo du es erzeugst, als auch vor oder in der Schleife.

    Übrigens kannst du dir die Scheife komplett sparen: in_array() macht genau das gleiche.

    Kommentar


    • #3
      was ist $array?

      Kommentar


      • #4
        hab das grad im code gsehen dass ich der variable max einen wert zuweise, bevor ich das array überhaupt erstelle.

        habs jz mal nach der wertzuweisung auf $array hingeschrieben.

        werd ich gleich mal ausprobieren

        EDIT:

        habs jz mal getestet ... funktioniert trotzdem noch nicht.

        in $array werden die ip adressen gepeichert die mit fgetcsv aus der datei geholt werden.

        lg
        Zuletzt geändert von phpnooooob; 28.01.2006, 11:56.

        Kommentar


        • #5
          PHP-Code:
          if(in_array($ip,$array))
               {
                   
          $bol 1;
               }
               else
               {
                   
          $bol 0;
               } 
          folgende fehlermeldung:
          Warning: in_array(): Wrong datatype for second argument in

          Kommentar


          • #6
            Na dann ...! Englisch kannst du doch, oder?

            Kommentar


            • #7
              ja na was meint er mit falschen datentyp?

              als zweiten parameter der funktion in_array muss ich doch das array angeben?

              Kommentar


              • #8
                richtig. aber wie es aussieht übergibst du keins.
                überprüfe, an welcher stelle und vor allem wie wird das array angelegt.
                zeig und mehr code u.u.

                Kommentar


                • #9
                  $array = fgetcsv($fpIP,100,",");

                  stand eh noch ganz oben im ersten posting

                  Kommentar


                  • #10
                    schaue bitte im manual nach, von welchem typ der rückgabewert von fgetcsv() ist.

                    Kommentar


                    • #11
                      Die Funktion fgetcsv() ist ähnlich der Funktion fgets(), nur dass fgetcsv() die eingelesene Zeile auf Felder im CSV Format (kommaseparierte Felder) hin überprüft, und ein Array mit den gelesenen Feldern zurückgibt.

                      Kommentar


                      • #12
                        richtig. aber ich wollte auf etwas anderes hinaus - entschuldige - du benutzst $array noch bevor du es initialisiert hast.

                        Kommentar


                        • #13
                          wie meinst du das mit dem initialisieren?

                          funktioniert das nicht, dass aus der variable $array direkt ein array wird wenn ich fgetcsv zuweise?

                          Kommentar


                          • #14
                            ich meine diese zwei zeilen:
                            PHP-Code:
                                 $max count($array);
                                 
                            $array fgetcsv($fpIP,100,","); 
                            es wird aber nur von oben nach unten geparst.

                            Kommentar


                            • #15
                              ja das is mir schon klar.

                              ich hab die zuweisung zu $max bereits rausgelöscht, da ich das für in_array() nicht mehr brauch.

                              Kommentar

                              Lädt...
                              X