Kuinka onnistuu tuo IP-osoitteen estäminen häiriköiltä sivulla?
PHP:llä voit kaivaa sivua pyytäneen IP:n muutujasta $_SERVER['REMOTE_ADDR'] ja verrata sitä häirikön IP:hen. Jos IP ei täsmää, sivu näytetään normaalisti, muuten ei näytetä.
Kiitos, kokeillaan heti kun ehditään. Toivottavasti se PHP nyt toimii siellä personal.fi:ssä...
Tästä on jo varmaan useampiaki aiheita. Käytä hakua. :)
Kirjoitin hakuun "IP-osoitteen estäminen" ja se löysi vain tämän aiheen.
Pitää osata olla vähän ovelampi hakusanojen suhteen: https://www.ohjelmointiputka.net/haku.php?sana=ip banni :)
Juuh, "IP-osoitteen estäminen" etsii vain juuri tuossa sanamuodossa olevat aiheet.
IP:n estäminen koko sivustoon onnistuu .htaccess:n avulla.
Pistät esimerkiksi seuraavat rivit .htaccess-tiedostoon:
Order allow,deny allow from all deny from 1.1.1.1 deny from 1.1.1.2 deny from 1.1.1.3
Tuo siis estää IP:t 1.1.1.1, 1.1.1.2 ja 1.1.1.3
Elikkä teenkö siis tiedoston estetyt.htaccess ja kirjoitan nuo siihen?
eikun pelkän .htaccess nimisen tiedoston. Tiedoston nimi on siis VAIN ".htaccess".
Ottaako palvelin sen .htaccess -tiedoston sitten automaattisesti käyttöön?
Ottaa.
No hienoa. Nytpä täytyy vain odotella häiriköitä... :)
No nyt tuli yksi, ja IP on estetty. :D
Itse käytän tällaista:
<?php ob_start(); //avataan tiedosto lukutilassa $tt2 = fopen("ip-bans.txt", "r"); $ip2 = $_SERVER['REMOTE_ADDR']; //luetaan rivejä, kunnes tiedosto loppuu while (!feof($tt2)) { //luetaan seuraava rivi muuttujaan $bannit2 = fgets($tt2, 300); } if ($bannit2 == $ip2) { exit("Sinulla on porttikielto."); } //suljetaan tiedosto fclose($tt2); ob_flush(); ?> <?php ob_start(); $ip = $_SERVER['REMOTE_ADDR']; $kone = gethostbyaddr($ip); //avataan tiedosto lukutilassa $tt = fopen("host-bans.txt", "r"); //luetaan rivejä, kunnes tiedosto loppuu while (!feof($tt)) { //luetaan seuraava rivi muuttujaan $bannit = fgets($tt, 300); } if ($bannit == $kone) { exit("Sinulla on porttikielto"); } //suljetaan tiedosto fclose($tt); ob_flush(); ?>
Jostain oon muokkaamalla saanut tuon tehtyä.
Eli tiedosoton joka riville oma ip ja host -tiedostoon hosti, jos haluaa.
Tuonhan voisin laittaakin sinne. Mutta tuo host, mitenksä se toimii?
ESIM:
IP=12.210.32.145
HOST=dr487dksie.dsl.phnet.fi
Ja tietääkseni hosti ei vaihdu, vaikka ip vaihtuukin jollain.
En ole varma.
Eli paras bannaus on varmaan ip ja host.
$kone = gethostbyaddr($ip);
Tolla koodilla ip:stä haetaan hosti
Tuo skriptisi ei anna porttikieltoa kuin viimeisimmälle ip-/hostibanni tiedostossa olevalle. Lisäksi fgets palauttaa mukanaan rivinvaihtomerkin, joten joudut sen trimmaamaan pois tutkiessasi muita rivejä - viimeisellä rivillä sitä ei tietenkään ole. Ja output bufferoinnin voit jättää tuosta kaiketi pois, vie vain turhaan resursseja.
Aihe on jo aika vanha, joten et voi enää vastata siihen.