Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: IP:n selvittäminen

Sivun loppuun

Sir McDuck [22.07.2003 22:47:38]

#

Aloittelen tekemään ensimmäisiä PHP-skriptejäni, ja meinasin kokeilla jonkinmoista yksinkertaista vieraskirjaa / shoutboxia esimerkiksi Ohjelmointiputkan oppaan avulla.

Nyt haluaisin tietää, miten esimerkiksi vieraskirjaan kirjoittajan IP-osoitteen saisi tallennettua muiden vieraskirjatietojen mukana tiedostoon data.txt.

Ja kun nyt pääsin tässä alkuun, niin kysyttäköön vielä, että kuinka IP-bannaamisen voisi toteuttaa vieraskirjassa. Minulla ei ole hajuakaan :|

leftover [22.07.2003 23:08:38]

#

Eli IP löytyy superglobaalista muuttujasta $_SERVER['REMOTE_ADDR']

IP-ban ei ole kovinkaan kummoinen toimenpide, jos toteat että viestin lähettäjä kaipaa bannin, lisäät sen esim. ban.txt omalle riville ja loppuun vaikkapa | erottimeksi. Koodiin taas heität ennen kirjoitusta:

<?php
// Bannatut IP:t
$banlist = file("ban.txt");

// Asetetaan flag falseksi eli oletuksena ketään käyttäjää ei bannata
$flag = false;

// Jyrätään lista läpi
foreach ($banlist as $banip) {

   // Järäytetään
   $ipban = explode("|", $banip);

   // Tarkastetaan
   if ($ipban[0] == $_SERVER['REMOTE_ADDR'] {

      // Bannataan
      $flag = true;
      }
   }

// jos ei ole bannattu
if ($flag == false) {
   // Tähän tulee kirjoituskoodi
   }
?>

Teme [23.07.2003 11:13:13]

#

Koodissa on virhe...

lainaus:

// Tarkastetaan
if ($ipban[0] == $_SERVER['REMOTE_ADDR'] {

If-lausekkeesta puuttuu sulku, eli tuon kuuluisi olla näin:

// Tarkastetaan
if ($ipban[0] == $_SERVER['REMOTE_ADDR']) {

T.M. [23.07.2003 15:07:48]

#

ei noita kannata erotella millään "|" erottimilla ellei sinne ängetä muuta tietoo mukaan, parempi tapa olisi katsoa riveittäin se tieto ja käyttää trim() funktiota

leftover [23.07.2003 17:56:48]

#

trim on kieltämättä käytännöllinen, ei vaan tajua windows-rivinvaihdon päälle. Itelläni oli koodihässäkkä, ja vasta kun olin aluksi trimmannut ja tämän jälkeen str_replacella poistanut \r alkoi pelittämään. Siksi suosittelen lopetusmerkkiä (vrt. tehokkuutta: yksi merkki ja yksi funktio vs. kaksi funktiota).

T.M. [23.07.2003 22:10:23]

#

lainaus:

(vrt. tehokkuutta: yksi merkki ja yksi funktio vs. kaksi funktiota).

mitäs nyt oikein selität? file() explode() oli ne sun funktiot? ja ne mun oli file() trim() eli 2 funktiota molemmissa hommissa, täh?

leftover [23.07.2003 23:37:14]

#

eli: trim poistaa merkkijonosta \n (linefeed). Kuitenkin esim. omat php-skriptini, kaikki windows-editorit sekä mac-editorit lisää rivinvaihtoon \r (return carriage) jota trim ei poista. Tämän vuoksi joutuu käyttämään str_replacea jotta \r poistuu. Tästä tulee vertailutilanne, jossa omassa esimerkissäni käytetään |-merkkiä ja explodea, sinun vaihtoehdossa taas trim- ja str_replace-funktiota. Molempien esimerkki tarvitsee luonnollisesti file-funktion toimiakseen.

T.M. [24.07.2003 00:15:31]

#

hmm?
en oo kyl tommoseen ongelmaan törmänny, kyllä se trim() poistaa kaikki tyhjät tilat tietääkseni

itse käytän explodena joskus \r\n kun testailen jotai juttuu, niin kyllä se sen explodaa oikein ja poistaa myös tyhjät rivinvaihdot

dOb [24.07.2003 00:24:49]

#

https://www.php.net/manual/fi/function.trim.php

leftover [24.07.2003 10:43:13]

#

Hmm, mielenkiintoista. Manuaalinkin mukaan pitäisi lähteä myös carriage return. Joko olen sössinyt jotain pahasti, tai käyttänyt huomaamattani ltrim-funktiota. Pitääkin alkaa testailemaan.

EDIT: Eli selvitin pikaisesti että oma virheeni on ollut käyttää pelkästään trimmiä. Alla oikea ja väärä esimerkki:

<?php
// Tämä on oikein
$muuttuja = trim($muuttuja);

// Tämä on väärin
trim($muuttuja);
?>

T.M. [24.07.2003 14:07:34]

#

noin sitä pitää! *hurraa*
PS: aika noobimainen virhe ;)

leftover [24.07.2003 19:45:37]

#

lainaus:

PS: aika noobimainen virhe ;)

Erittäin. En kuitenkaan painu maan sisälle murehtimaan. Ainakaan ilman kunnon kasaa pakastepizzoja :-)

NiLon [09.08.2003 07:39:09]

#

Olisko mahdollista selvittää käyttäjän ip proxyn läpi?
Olen jossain kuullut että olisi mutta miten tuon voisi toteuttaa?

leftover [09.08.2003 08:57:06]

#

Onhan tuo. Et tarvitse kuin oikeudet proxyn logiin, jolloin pystyt helposti löytämään oikean ip:n :-)

NiLon [09.08.2003 09:32:20]

#

Näitä oikeuksia ei taida sitten saada ihan tavallinen pulliainen :) ?


Sivun alkuun

Vastaus

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

Tietoa sivustosta