[PHP] IP bezoeker vergelijken met IP's in banfile.txt

Pagina: 1
Acties:

  • GoodspeeD
  • Registratie: April 2002
  • Laatst online: 14:39
Ik heb een textbestand gemaakt, genaamd banfile.txt, waarin ik de IP's van gebruikers in heb gezet, waarvan ik niet wil dat ze een bepaalde actie uitvoeren. Om te bekijken of de bezoeker z'n IP voorkomt in het banfile.txt, heb ik een functie gemaakt, genaamd isbanned(), die 1 retourneert als het IP wel voorkomt in het bestand en 0 als het IP dus niet voorkomt.

Dit is de code voor die functie:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function isbanned() {
    $banfile = "banfile.txt";
    $localip = $_SERVER['REMOTE_ADDR'];
    if (!file_exists("$banfile")) {
        $bfp = fopen("$banfile", "a");
        fclose($bfp);
    }

    $bfp = fopen("$banfile","r") or die ("error when opening banfile.txt");
    $buffer = fgets($bfp);
    while(!feof($bfp) && $buffer != $localip) {
        $buffer = fgets($bfp);
    }
    fclose($bfp);   
    if ($buffer == $localip) {
        return 1;
    }
    else {
        return 0;
    }
}


Het probleem is, dat wanneer ik m'n script uitvoer en de functie aangeroepen wordt, het script continu in het while loopje blijft hangen en ik na 10 seconden dus een foutmelding krijg, omdat het allemaal te lang duurt. Ik heb van alles bekeken, maar ik begrijp echt niet, waarom hij niet gewoon dat while loopje uitgaat.

Kent iemand dit probleem of ziet iemand wat ik fout doe????

Gr.

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:05
Ik stel voor dat je jouw functie gewoon eens debugged. That's part of the job.... Dan zie je zelf waar het misgaat en waarom, en kan je het eenvoudig aanpassen.

Het zal dus bij de conditie in uw while statement liggen. Niet moeilijk eigenlijk om te zien wat er fout is hoor....

https://fgheysels.github.io/


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

makkelijkere oplossing:

- lees banfile.txt in met file
- controleer array met in_array

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

en als je een grootte opgeeft bij die fgets?
ik heb het idee dat je steeds dezelfde regel uitleest zonder door je file te wandelen

Doet iets met Cloud (MS/IBM)


  • cosmoOo
  • Registratie: Maart 2000
  • Laatst online: 09:20

cosmoOo

SCSI in vogelhuisje

is && niet gewoon AND ?, je hebt toch OR nodig anders wacht je tot je het einde hebt bereikt en je het ip in de lijst ziet en dat gebeurd natuurlijk nooit

foutje

It's a known fact that one may train cats to do exactly what they want.


  • GoodspeeD
  • Registratie: April 2002
  • Laatst online: 14:39
blegh. :-)

  • GoodspeeD
  • Registratie: April 2002
  • Laatst online: 14:39
D2k schreef op 08 oktober 2002 @ 13:52:
en als je een grootte opgeeft bij die fgets?
ik heb het idee dat je steeds dezelfde regel uitleest zonder door je file te wandelen
fgets, leest toch als je niets opgeeft maximaal 1024 KB en tot aan een newline karakter? Vervolgens schuift de filepointer toch een regel verder of moet ik die handmatig verder schuiven?

  • GoodspeeD
  • Registratie: April 2002
  • Laatst online: 14:39
whoami schreef op 08 oktober 2002 @ 13:50:
Ik stel voor dat je jouw functie gewoon eens debugged. That's part of the job.... Dan zie je zelf waar het misgaat en waarom, en kan je het eenvoudig aanpassen.

Het zal dus bij de conditie in uw while statement liggen. Niet moeilijk eigenlijk om te zien wat er fout is hoor....
Ik heb geen debuggingtooltje en ik heb zelf geen webserver met PHP, dus ik moet m'n scripts ook steeds uploaden naar de webserver van m'n provider. En als het niet moeilijk is om te zien wat er fout is, zou je mij dat dan aub kunnen zeggen??? Daar startte ik dit topic namelijk voor. :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:05
Ooit al eens van de edit-knop gehoord? ;)

https://fgheysels.github.io/


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

hmmz
krijg je geen false trug dan in $buffer?

Doet iets met Cloud (MS/IBM)


  • GoodspeeD
  • Registratie: April 2002
  • Laatst online: 14:39
thomaske schreef op 08 oktober 2002 @ 13:51:
makkelijkere oplossing:

- lees banfile.txt in met file
- controleer array met in_array
Spank you very much. Werkt perfect. :D
Pagina: 1