Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: IP:n haku tiedostosta

Sivun loppuun

masiaro [29.06.2007 00:59:59]

#

<?php

$ff = file("db/iplista.txt");

for ($i = 0; $i < count($ff); $i++) {
if ($ff[$i] == "123.123.123.123") {

   $tiedot = explode("|", $ff[$i], 2);

   $ip = $tiedot[0];
   $kello = $tiedot[1];
   $aika = $tiedot[2];

   echo "$ip $kello $aika";
}; };
?>

ja se iplista.txt sisältää (esimerkki)

222.225.255.255|1182787261|
558.255.012.312|1182803506|
123.123.123.123|1182803558|
810.186.183.191|1182809369|

Tämmöinen ei kuitenkaan toimi. Tarkoitus on hakea oikea ip tiedostosta ja lukea ip:n vierellä olevat tiedot.

Lebe80 [29.06.2007 01:04:21]

#

debugilla selviää syy.

<?php

$ff = file("db/iplista.txt");

for ($i = 0; $i < count($ff); $i++) {
  if ($ff[$i] == "123.123.123.123") {

     $tiedot = explode("|", $ff[$i], 2);

     $ip = $tiedot[0];
     $kello = $tiedot[1];
     $aika = $tiedot[2];

     echo "$ip $kello $aika";
  }else{
     echo 'Muuttuja $ff['.$i.'] ei ollut "123.123.123.123", vaan se oli "'.$ff[$i].'"<br/>'."\n";
  }
}
?>

Saat pähkäillä myös itse mistä syy johtuu, kun ajat tämän ;)

masiaro [29.06.2007 01:36:19]

#

Se ei kuitenkaan toimi vaikka laitoin hakusanaksi 123.123.123.123 ja tiedostossakin on 123.123.123.123|1182803558-rivi. Sain kuitenkin toi toimimaan näin:

<?php

if (($fille = file("db/iplista.txt")) !== false) {
  foreach ($fille as $vallue) {
    $datta = explode("|", $vallue);
    if ($datta[0] == "123.123.123.123")
      echo ("".$datta[2]."");
    } // foreach end
  } // if end
?>

Nyt ilmestyi uusi ongelma; tulostettuna 1182787261 jälkeen tulee rivinvaihto, miten saan sitä pois?

Metabolix [29.06.2007 01:39:05]

#

Funktiolla trim.

masiaro [29.06.2007 01:48:30]

#

Metabolix kirjoitti:

Funktiolla trim.

<?php
$korvaavat = array("
" => "";


if (($fille = file("db/iplista.txt")) !== false) {
  foreach ($fille as $vallue) {
    $datta = explode("|", $vallue);
    if ($datta[0] == "123.123.123.123")
	$dat = strtr($datta[2], $korvaavat);
	echo ("$dat");
    } // foreach end
  } // if end
?>

Ei toimi :(

Lebe80 [29.06.2007 01:51:22]

#

käytä sitä trimmiä... (käytit strtr:ää)

$dat = trim($datta[2]);

masiaro [29.06.2007 01:54:10]

#

Lebe80 kirjoitti:

käytä sitä trimmiä... (käytit strtr:ää)

$dat = trim($datta[2]);

Olen vanhaaikainen :D Laitoin ehdottamasi koodi siihen, ja nyt tietue tulostuu nätisti ilman rivinvaihtoa mutta toistuu 13kertaa :S

T.M. [29.06.2007 01:54:45]

#

$datta[2] on aina ja pelkästään yksi rivinvaihto, koska sinulla on vain 2 solua taulukossa, eka solu on $datta[0] toka $datta[1], ja kolmas on se mitä jää tuon viimeisen | merkin jälkeen jäljelle, eli rivinvaihto.

Trimmiä ei kannata käyttää noissa juttuissa missä explode erottelee nuo tiedot, vaan laittaa viimeiseksi merkiksi sen | merkin, jolloin rivinvaihtoa ei tule viimeiseen soluun, mutta juuri näinhän sinä oletkin tehnyt, joten ihan oikeilla jäljillä, mutta vika on kyllä tuossa että sinulla ei ole kuin 2 arvoa, mutta yrität saada jostain sen kolmannen arvon, jota ei edes ole olemassa.

masiaro [29.06.2007 02:00:18]

#

T.M. kirjoitti:

$datta[2] on aina ja pelkästään yksi rivinvaihto, koska sinulla on vain 2 solua taulukossa, eka solu on $datta[0] toka $datta[1], ja kolmas on se mitä jää tuon viimeisen | merkin jälkeen jäljelle, eli rivinvaihto.

Trimmiä ei kannata käyttää noissa juttuissa missä explode erottelee nuo tiedot, vaan laittaa viimeiseksi merkiksi sen | merkin, jolloin rivinvaihtoa ei tule viimeiseen soluun, mutta juuri näinhän sinä oletkin tehnyt, joten ihan oikeilla jäljillä, mutta vika on kyllä tuossa että sinulla ei ole kuin 2 arvoa, mutta yrität saada jostain sen kolmannen arvon, jota ei edes ole olemassa.

Eikun laitan kolmannelle arvolle tarkan päivänmäärä, joten arvo muuttui 2:ksi.

Muuten nyt toimii, kiitoksia paljon kaikille joka auttoivat! :)


Sivun alkuun

Vastaus

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

Tietoa sivustosta