Kan iemand aan mij vertellen waarom het vergelijken van de huidige ip adres met de ip adressen uit het tekst bestand niet goed verloopt?



$ip = $_SERVER[REMOTE_ADDR];
$counter = 0;

$filename = "addresses.txt";
$found = false;


$lines = file($filename);
foreach($lines as $line_num => $line)
{
	$counter++;
	if($line == $ip){
		$found = true;
	}
}


Laat het complete script eens zien.

Maak je gebruik van fopen(); ?
Met die foreach zonder fopen(); zal het niet goed gaan werken lijkt me.
Nee, ik denk niet dat dat zomaar te vertellen is. Maar als je eens een echo doet voor het $ip adres dat je probeert te vergelijken en elke $line, dan komen we misschien al een eind verder.
$ip = $_SERVER[REMOTE_ADDR];
Wordt
$ip = $_SERVER['REMOTE_ADDR'];

if($line == $ip){
Wordt
if(trim($line) == $ip){

[size=xsmall]Toevoeging op 17/08/2012 13:50:04:[/size]

Chris NVT op 17/08/2012 13:43:26

Maak je gebruik van fopen(); ?
Met die foreach zonder fopen(); zal het niet goed gaan werken lijkt me.


De function file() heeft geen fopen() nodig.
Zie php.net
@Chris NVT
Het werkt ook zonder fopen.

@Erwin H
Echo-en van de ip adressen heb ik geprobeerd en beide ip adressen waren gelijk (zonder een extra spatie of wat dan ook).

[size=xsmall]Toevoeging op 17/08/2012 13:53:25:[/size]

@-SanThe-
Blijkbaar moest ik $line trimmen.
Bedankt!
Tolga Demir op 17/08/2012 13:50:12

beide ip adressen waren gelijk (zonder een extra spatie of wat dan ook).


Maar bij degene uit de file staat er een <enter> achter (\r\n)
- SanThe - op 17/08/2012 13:55:38

[quote="Tolga Demir op 17/08/2012 13:50:12"]
beide ip adressen waren gelijk (zonder een extra spatie of wat dan ook).


Maar bij degene uit de file staat er een <enter> achter (\r\n)
[/quote]

Blijkbaar wel, terwijl ik geen nieuwe breakline heb gebruikt.
Nee, maar in de file staan ze steeds op een nieuwe regel.
Dus daar staat een <enter> achter om naar de nieuwe regel te gaan.
En file() leest alles in, dus ook de <enter>.
Bij een echo zul je de <enter> niet zien.
Als het goed is zie je wel in de broncode dat ie naar de volgende regel gaat.
- SanThe - op 17/08/2012 14:00:25

Nee, maar in de file staan ze steeds op een nieuwe regel.
Dus daar staat een <enter> achter om naar de nieuwe regel te gaan.
En file() leest alles in, dus ook de <enter>.
Bij een echo zul je de <enter> niet zien.
Als het goed is zie je wel in de broncode dat ie naar de volgende regel gaat.


Ahh, juist ja. Heel erg bedankt. :)

Reageren