Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Lukeminen toiselta sivulta

Sivun loppuun

Sir McDuck [15.10.2003 20:31:02]

#

Eräällä sivulla lukee aina 1 tai 0, ei mitään muuta, ei mitään HTML-koodeja.

Kuinka voisin lukea tuolta sivulta, lukeeko siellä 1 vaiko 0?

Eli silloin kun sivulla lukee 1, tulostaisin vaikkapa omalla sivullani "Sivulla lukee 1", ja kun sivulla lukee "0", omalla sivullani lukisi "Sivulla lukee 0".

Tämä sivu (jossa tämä 1 tai 0 lukee) ei ole omalla palvelimellani, joten voinko edes lukea sitä?

odys [15.10.2003 20:39:05]

#

<?php
    $data = file_get_contents("http://sivun.osote.org/sivu.html");
    if ($data == "1")
        echo "Sivulla lukee 1";
    else
        echo "Sivulla lukee 0";
?>

Sir McDuck [15.10.2003 21:00:39]

#

Eipä tunnu tuo toimivan.
Virheilmoituksena tulee:
Fatal error: Call to undefined function: file_get_contents() in d:\program files\easyphp\www\tila.php on line 2

Edit:
Ahaa. Kävin PHP:n sivuilla ja etsin tuota file_get_contents()-funktiota. Käsitinkö oikein, tuota funktiota ei ole 4.3.0:aa vanhemmissa versioissa?
Löysin kuitenkin samalta sivulta tällaisen pätkän, joka korvaa sen:

<?php
if (!function_exists("file_get_contents")) {
  function file_get_contents($filename, $use_include_path = 0) {
    $data = ""; // just to be safe. Dunno, if this is really needed
    $file = @fopen($filename, "rb", $use_include_path);
    if ($file) {
      while (!feof($file)) $data .= fread($file, 1024);
      fclose($file);
    }
    return $data;
  }
}

Lisäsin odysin pätkän tuon jälkeen niin toimi. Kiitos!


Edit2: Jahas. Eipäs toimikaan. Sivulla lukee 1, mutta tuo pätkä palauttaa kuitenkin arvoksi 0. Mikähän lie nyt vikana?

Antti Laaksonen [15.10.2003 21:10:24]

#

PHP:si on todennäköisesti liian vanha - file_get_contents-funktio tuli mukaan vasta PHP:n versiossa 4.3.0. Näin voit tehdä saman vanhemmissa versioissa toimivan file-funktion avulla.

<?php
$data = file("http://www.sivunnimi.fi/sivu.html");
if ($data[0] == "1")
   echo "Sivulla lukee 1.";
else
   echo "Sivulla lukee 0.";
?>

Sir McDuck [15.10.2003 21:16:04]

#

Johan lie outoa.

Kokeilin tuota Antinkin lisäämää koodia. Palauttaa edelleen nollan vaikka pitäisi palauttaa ykkönen. Lisäsin vieläpä vaihtoehdon että jos ei ole yksi tai nolla, tulostaa tekstin "Sivulla ei lue mitään" ja juuri tämän se nyt tulostaa. Eli skripti yrittää väittää ettei sivulla todellakaan lue mitään, vaikka siellä kyllä lukee.

Se ei ole muuten HTML-sivu, enkä edes tiedä mikä tiedostomuoto. Onko sillä mitään merkitystä?

Antti Laaksonen [15.10.2003 21:23:57]

#

Kokeile tulostaa $data[0]:n sisältö, niin näet, mitä sieltä todellisuudessa tulee. Jos tiedostossa on numeron lisäksi rivinvaihtoja, käytä trim-funktiota niiden poistamiseen.

if (trim($data[0]) == 1)

Tai pystytkö antamaan testiä varten sen sivun osoitteen, jolta numero luetaan?

Sir McDuck [15.10.2003 21:29:30]

#

lainaus:

Kokeile tulostaa $data[0]:n sisältö, niin näet, mitä sieltä todellisuudessa tulee. Jos tiedostossa on numeron lisäksi rivinvaihtoja, käytä trim-funktiota niiden poistamiseen.

if (trim($data[0]) == 1)

Tai pystytkö antamaan testiä varten sen sivun osoitteen, jolta numero luetaan?

Jahas. Kyllä se ykkösen sieltä vain tulostaa :o Mutta edelleenkään tuo if-else ei toimi :o
Rivinvaihtoja siellä ei kyllä pitäisi olla.

Edit: Vielä mitä, kyllähän siellä kai sitten olikin niitä rivinvaihtoja, sillä se koodi toimii nyt.

Kiitos!

odys [15.10.2003 21:32:21]

#

<?php
    $data = trim(implode("", file("http://osote.com/")));
    if ($data == "0")
        echo "Sivulla lukee 0";
    else if ($data == "1")
        echo "Sivulla lukee 1";
    else
        echo "Sivulla lukee jotain mitä ei pitäisi!";
?>

Sivun alkuun

Vastaus

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

Tietoa sivustosta