Yritän tehdä koodia, joka lukee tiedostosta rivi riviltä osoitteita ja ottaa niihin yhteyttä ja tulostaa osoitteesta tulevan vastauksen.
<?php $sivuja = file("sivuja.txt"); for ($i = 0; $i < count($sivuja); $i++) { $hosti = "www.".$sivuja[$i]; if (!$socket = fsockopen($hosti, 80, $errno, $errstr, 30)) { echo "$errstr ($errno)<br />\n"; } else { $paketti = "GET / HTTP/1.1\r\n"; $paketti .= "Host: $hosti\r\n"; $paketti .= "Connection: Close\r\n\r\n"; fwrite($socket, $paketti); while (!feof($socket)) { echo fgets($socket); } fclose($socket); } } ?>
Kun tuon koodin ajaa nii se tuottaa error teksti, joka sanoo että osoitteeseen ei voida ottaa yhteyttä.
Mutta jos laitan osoitteen suoraan function eli
niin silloin se tuottaa oikeanlaisen vastauksen.
Mikä mahtaisi olla ratkaisu tuohon ongelmaan?
file() jättää rivinvaihdot jokaisen luetun rivin loppuun (ellei sille sanota erikseen, että poista ne). Syy joko saattaa olla siinä tai sitten ei.
<?php $sivuja = explode("\r\n", file_get_contents("sivuja.txt")); for ($i = 0; $i < sizeof($sivuja); $i++) { $hosti = "www." . $sivuja[$i]; if (!$socket = fsockopen($hosti, 80, $errno, $errstr, 30)) { echo "$errstr ($errno)<br>\n"; } else { $paketti = "GET / HTTP/1.1\r\n"; $paketti .= "Host: $hosti\r\n"; $paketti .= "Connection: Close\r\n\r\n"; fwrite($socket, $paketti); while (!feof($socket)) { echo fgets($socket); } fclose($socket); } } ?>
Kiitos, nyt toimii.
Vika oli tosiaan siinä että file() jätti sen rivinvaihdon loppuun.
Aihe on jo aika vanha, joten et voi enää vastata siihen.