Eli olen ihmetelly tässä tovin kuinka saisin tämän koodin pätkän toimimaan ja myös tehtyä siihen muutaman lisäyksen, että se toimisi niin kuin lomake eli lähettäisi tai tulostaisi tiedon ja päivittäisi sen niin, että koko sivutilallen ei pääsisi tämä ip. Sorry, kun vähän sekavasti sanottu. Tässä kuitenkin koodin pätkä.
Koodi pitää liittää (vaikkapa include-komennolla) kaikkiin tiedostoihin, joihin pääsy halutaan estää. Muiden kuin php-tiedostojen suojaaminen on siis paljon vaikeampaa, vieraalla palvelimella usein mahdotontakin.
On järkevämpää tallentaa IP:t tiedostoon ja tehdä tarkistus silmukassa.
<?php # kielto.php foreach (file('osoitteet') as $osoite) { if (trim($osoite) === $_SERVER['REMOTE_ADDR']) { die("Pääsy kielletty"); } } ?>
<?php # index.php include 'kielto.php'; ?>
.htaccess:lla voi estää muutkin tiedostot.
https://www.ohjelmointiputka.net/keskustelu/
Jälleen upeaa auttamista! Kiitos!
MikSor kirjoitti:
Jälleen upeaa auttamista! Kiitos!
No en tiedä, toi ip numero on huono kun se on yleensä dynaaminen.
Tästä allaolevasta on vain vähän kokemusta, mutta ei mitään negatiivista vielä.
Eli ota talteen koneen nimi ja noi muut. Yllätys miten usein ihmiset nimeävät
koneensa tosi persoonallisesti, mutta jos koneen nimi on esim ACER-1, niin
sitten tää ei ole hyvä.
<?
echo ("Koneesi nimi on: "). gethostbyaddr($remote).'<br>';
echo ("käyttöjärjestelmäsi ja selaimesi ovat: "). $_SERVER['HTTP_USER_AGENT'].'<br>';
?>Luet noi muuttujaan ja tallennat vaikka laskuriin.
peg kirjoitti:
echo ("Koneesi nimi on: "). gethostbyaddr($remote).'<br>';
$_SERVER['REMOTE_ADDR'] // kenties?
DNS-nimi ei kyllä ole yhtään sen pysyvämpi kuin IP:kään, joten hyöty menee miinuksen puolelle (reverse-DNS -lookuppien tekemiseen kuluu aikaa).
peg kirjoitti:
.htaccess:lla voi estää muutkin tiedostot.
Vaan mitenpä estetään IP-osoitteen perusteella? Tätä ei ainakaan tuossa keskustelussa neuvottu.
Järkevä ratkaisuhan on tehdä sivut, joihin sisällön tuottaminen vaatii tunnuksen tai joissa tuotettu sisältö muuten suodatetaan. Selkeät kuormitusyritykset sitten voi estää IP:n avulla.
Metabolix kirjoitti:
Vaan mitenpä estetään IP-osoitteen perusteella?
Deny from <ip>
Muuten Metabolixin kanssa kyllä samoilla linjoilla.
Blaze: Tarkoitin noin kuin kirjoitin, jos tulostat nuo molemmat
niin huomaat eron.
<? echo gethostbyaddr($remote).'<br>'; // ACER-1 echo $_SERVER['REMOTE_ADDR']; // 127.0.0.1 ?>
ja siis vielä:
"Yllätys miten usein ihmiset nimeävät
koneensa tosi persoonallisesti"
EDIT: HUOMATKAA NYT JOS KÄYTÄTTE TOTA MIKÄ ANTAA KONEEN NIMEN,
ETTÄ SE EI SAA OLLA TOI TEHDAS ASETUS. Vaan sen pitää olla
esim "pekan toosa" tai jotain mitä käyttäjä on siihen laittanut
kun on asentanut käyttiksen.
Mitä tuo $remote-muuttuja sisältää?
peg kirjoitti:
Blaze: Tarkoitin noin kuin kirjoitin, jos tulostat nuo molemmat
niin huomaat eron.
Niin huomaan joo :)
Warning: gethostbyaddr() [function.gethostbyaddr]: Address is not a valid IPv4 or IPv6 address in /var/www/localhost/htdocs/hosttest.php on line 2 127.0.0.1
Muuttujaa nimeltä $remote kun ei ole olemassa, niin gethostbyaddr() pukkaa virhettä.
peg kirjoitti:
"Yllätys miten usein ihmiset nimeävät
koneensa tosi persoonallisesti"
https://www.ohjelmointiputka.net/keskustelu/
koneen nimen, jos käyttiksen asennuksen yhteydessä et laita siihen mitään niin merkkikoneet laittaa siihen jonkun omansa Acer käyttää monissa malleissaan tuota ACER-1.
EDIT: aivan, kokeilepa wintoosassa.
Katos, Windows tosiaan palauttaa koneen nimen, jos gethostbtaddr()-funktiolle antaa tyhjän merkkijonon parametriksi. Tuolla $remote-muuttujalla ei kyllä tee mitään.
echo "Koneesi nimi on: ". gethostbyaddr(''); // Koneesi nimi on mini-pc
Edelleenkin tuo on kyllä kaukana mistään järkevästä, sillä
a) tuo palauttaa sen palvelinkoneen nimen
b) toimii vain windows-palvelimissa
Ei sitä $remote-muuttujaa ole olemassa, vaikka Windowsistakin ottaisin yhteyttä.
Vai tarkoititko, että palvelimen pitäisi pyöriä Windowsissa? Siinä tapauksessa laita toi skripti saataville johonkin. Mää en jaksa masentaa Apachea tuohon virtuaalimasiinaan.
Edit:
ajv kirjoitti:
a) tuo palauttaa sen palvelinkoneen nimen
Jotain tällaista ounastelinki :)
Kertoisitko vielä miten olet saanut tämän näyttämään clientin koneen nimen peg? Jotenkin kuulostaa mahdotomalta...
User-Agentti on helppo muuttaa, joten sitä tuskin porttikieltoihin kannattaa käyttää.
Aihe on jo aika vanha, joten et voi enää vastata siihen.