russian_hacker
8.06.2009 - 11:14
люди никогда не приходилось иметь с ними дело и совсем запутался
вот функция
PHP |
function socket_do($host, $headers) {
if (fsockopen($host, 80)) {
$f= fsockopen($host, 80); fwrite($f, $headers); $flag = false; $res = ""; $headers = "";
while (!feof($f)) { $line = fgets($f); if (!$flag) $headers .= $line; else if ($flag) $res .= $line; if(!trim($line)) $flag = true; } fclose($f);
$arr['headers'] = $headers; $arr['file'] = $res; $arr['flag'] = $flag; return $arr;
} else {
echo error for open socket; } } |
и иногда при её использовании в $arr['headers'] попадает часть html страницы без heade'ров
почему???
З.Ы: Функцию нашел на этом форуме немного переделал!
Спустя 12 минут, 24 секунды (8.06.2009 - 10:26) vasa_c написал(а):
PHP |
if (fsockopen($host, 80)) { $f= fsockopen($host, 80); |
Что это?
Ваша задача состоит из двух:
1. Получить из сокета запрошенный документ
2. Разобрать его как вам нужно (вытащить $headers и т.п.)
Выполните 1 пункт для начала, выведите всё что получили на экран и подумайте как этом можно разобрать.
Спустя 44 минуты, 54 секунды (8.06.2009 - 11:11) russian_hacker написал(а):
получил я страницу...
впринцыпи можно и не разделять её на header'ы и страницу
просто взть функцию для поиска и вытаскивать то что нужно
а так правильно???
PHP |
$f= fsockopen($host, 80, $errno, $errstr);
if(!$errno){ fwrite($f, $headers); $line = ""; while (!feof($f)) { $line .= fgets($f); } fclose($f); return $line; } else { return $errno.$errstr; } |
Спустя 4 часа, 28 минут, 5 секунд (8.06.2009 - 15:39) vasa_c написал(а):
Цитата |
а так правильно??? |
Работает, значит правильно, не работает - неправильно.
Смотря что у вас в $headers.