Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: ip:n epahuomiominen laskurissa

Sivun loppuun

jideko [05.02.2005 10:35:28]

#

Yritin kehitella jutun jolla tarkistaa onko ip-osoite asetettu epahuomioitavaksi kavijalaskurissa.
Mutta ilmeisesti en ymmarra taysin tuon breakin toimivuutta, kun se ei tuossa toimi.

<?php

/*
luetaan tiedostosta ei-huomioitavat ip:t. Jos  kayttajan ip loytyy listasta asetetaan $lasketaanko muuttuja falseksi.
ip:t tiedostossa muodossa:
xxxxx|iposoite
xxxxx|iposoite
*/
$ip = $_SERVER['REMOTE_ADDR'];
$bannatut= file("ban.txt");
for ($i=0; $i < count($bannatut); $i++) {
	$osa=explode("|",$bannatut[$i]);
	$ignoreip=$osa[1];
	if ($ip==$ignoreip) {
		$lasketaanko=false;
		break 1;
	}
}



//jos $lasketaanko muuttuja ei ole false jatketaan.
if ($lasketaanko !== false) {
	echo ("ip:ta ei loydy listasta, joten kaynti lasketaan");

}
else {
	echo("ip loytyi listasta, joten kayntia ei lasketa");
}

?>

ban.txt nayttaa talta.

Erkki|69.242.175.101
mina|69.242.175.173
Jaska|69.242.134.173

Jos listassa on pelkasataan oma ip:ni tai se on viimeisena niin toimii kylla, mutta kun se on tuollain keskella listaa niin ei toimi kuten haluaisin.

Antti Laaksonen [05.02.2005 13:17:15]

#

Komento break poistuu silmukasta, joten sitä olet käyttänyt ihan oikein. Mutta ongelma taitaa olla siinä, että et ole antanut aloitusarvoa $lasketaanko-muuttujalle. Siksi se ei milloinkaan ole tosi. Minä muuttaisin nimeksi $listalla ja panisin arvoksi 1, jos IP on listalla. Muuttujan oletusarvo on 0. Silloin ehdoksi riittää if ($listalla) { ... } else { ... }.

sqwiik [05.02.2005 13:20:27]

#

En ole täysin varma, mutta koeta muuttaa vertailussa tuo !== muotoon != (mielestäni !== ei ole mitään kunnon kieltä...) ja laita koodin alkuun $lasketaanko = true, sillä itse en ainakaan muista mikä on alustamattoman muuttujan oletusarvo.

Sharph [05.02.2005 13:39:51]

#

sqwiik kirjoitti:

En ole täysin varma, mutta koeta muuttaa vertailussa tuo !== muotoon != (mielestäni !== ei ole mitään kunnon kieltä...) ja laita koodin alkuun $lasketaanko = true, sillä itse en ainakaan muista mikä on alustamattoman muuttujan oletusarvo.

!== on myös PHP:tä, ero !=:n ja !==:n välillä on se että !== erottelee nollan ja falsen. Sama juttu == ja ===.

ajv [05.02.2005 14:19:03]

#

Sharph kirjoitti:

!== on myös PHP:tä, ero !=:n ja !==:n välillä on se että !== erottelee nollan ja falsen. Sama juttu == ja ===.

Ero !=:n ja !==:n välillä on se, että === ottaa huomioon muuttujan tyypin. Eli:

<?php
if(1 == "1") echo "totta" //totta

if(1 !== "1") echo "totta" //totta
?>

jideko [06.02.2005 00:59:29]

#

Muokkailin tuota Laaksosen ohjeitten mukaan ja ei vielakaan toimi. Olen vaikka mita yrittanyt mutta en ole saanut toimimaan. Vaikka ip olisi listlla niin tuo sanoo ettei olisi.

<?php
/*
luetaan tiedostosta ei-huomioitavat ip:t. Jos  kayttajan ip loytyy listasta asetetaan $listalla muuttuja 1:ksi.
ip:t tiedostossa muodossa:
xxxxx|iposoite
xxxxx|iposoite
*/
$ip = $_SERVER['REMOTE_ADDR'];

$bannatut= file("ban.txt");
$listalla= 0;
for ($i=0; $i < count($bannatut); $i++) {
	$osa=explode("|",$bannatut[$i]);
	if ($osa[1] == $ip) {
		$listalla= 1;
		break;
	}
}
if ($listalla) echo "ip loytyi listalta, joten kayntia ei lasketa";
	else echo "ip:ta ei loydy listalta, joten kaynti lasketaan";

?>

tsuriga [06.02.2005 01:36:19]

#

Mitenkä olisi rtrim($osa[1]) == $ip vertailu?

jideko [06.02.2005 02:24:28]

#

Nyt toimii.
Oikein hienoa.
Mietin tuota kylla yhdessa valissa mutta en tiennyt funktiota niin enpa sitten kokeillut.
Kiitos kaikille auttajille.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta