Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Различие текста страниц в зависимости от способа скачивания

Сообщения:  [1-9] 

 
 автор: Владимир55   (04.06.2007 в 20:11)   письмо автору
 
   для: Unkind   (04.06.2007 в 19:01)
 

Собственно, я руководствовался Самоучителем стр.53, но, видимо, не так его понял.

Функция заработала, спасибо!

   
 
 автор: Trianon   (04.06.2007 в 19:29)   письмо автору
 
   для: Владимир55   (04.06.2007 в 18:35)
 

Входным параметром является та адресная строка (от http:// до конца) которую Вы набираете в браузере. Текст функция вернет в качестве результата.

   
 
 автор: Unkind   (04.06.2007 в 19:01)   письмо автору
 
   для: Владимир55   (04.06.2007 в 18:47)
 

Хм...Я не перестаю удивляться.


<?php
function ss_file_get_contents($url,$r_headers=false){ 
    
$NL=chr(13).chr(10); 
    
$arr=parse_url($url); 
    
$s=fsockopen($arr['host'],80); 
    
fputs($s,'GET '.(!empty($arr['path'])?$arr['path']:'/').(!empty($arr['query'])?'?'.$arr['query']:'').' HTTP/1.0'.$NL.'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*'.$NL.'Accept-Language: ru'.$NL.'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'.$NL.'Host: '.$arr['host'].$NL.'Connection: Close'.$NL.$NL); 
    
$headers=''
    while(!
feof($s)&&($t=fgets($s,2048))!==$NL)$headers.=$t
    
$page=''
    while(!
feof($s))$page.=fgets($s,2048); 
    
fclose($s); 
    return (
$r_headers?$headers.$NL:'').$page
}

$abc ss_file_get_contents("http://test.ru/");
?>

   
 
 автор: Владимир55   (04.06.2007 в 18:47)   письмо автору
 
   для: Unkind   (04.06.2007 в 18:43)
 

Я не понимаю, как запустить эту функцию.

Я вижу у нее два аргумента - $url и $r_headers. Один из них задан.

По идее, выходной параметр функции указывается в return, но там не переменная, а целая конструкция, и я не знаю, что с ней делать.

Итого:
Есть $url = "http://test.ru/" ;
И надо, чтобы содержимое этой страницы оказалось в переменной $abc.

Как этого достичь?

   
 
 автор: Unkind   (04.06.2007 в 18:43)   письмо автору
 
   для: Владимир55   (04.06.2007 в 18:35)
 

Но если так, то у меня $page - голяк...
А при чем тут вообще названия переменных?

   
 
 автор: Владимир55   (04.06.2007 в 18:35)   письмо автору
 
   для: sms-send   (04.06.2007 в 18:04)
 

Если я правильно понял, то входным параметром является $url, то есть перед этой функцией должен быть задан параметр

$url = "http://test.ru/" ;


Так?

А выходным параметром, в котором будет находиться полностью считанный код страницы, является $page.

Верно?

Но если так, то у меня $page - голяк...

   
 
 автор: sms-send   (04.06.2007 в 18:04)   письмо автору
 
   для: Владимир55   (04.06.2007 в 17:52)
 

Попробуйте вместо file_get_contents использовать ss_file_get_contents, описание ниже.

<?php
function ss_file_get_contents($url,$r_headers=false){
    
$NL=chr(13).chr(10);
    
$arr=parse_url($url);
    
$s=fsockopen($arr['host'],80);
    
fputs($s,'GET '.(!empty($arr['path'])?$arr['path']:'/').(!empty($arr['query'])?'?'.$arr['query']:'').' HTTP/1.0'.$NL.'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*'.$NL.'Accept-Language: ru'.$NL.'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'.$NL.'Host: '.$arr['host'].$NL.'Connection: Close'.$NL.$NL);
    
$headers='';
    while(!
feof($s)&&($t=fgets($s,2048))!==$NL)$headers.=$t;
    
$page='';
    while(!
feof($s))$page.=fgets($s,2048);
    
fclose($s);
    return (
$r_headers?$headers.$NL:'').$page;
}
?>

   
 
 автор: mihdan   (04.06.2007 в 18:03)   письмо автору
 
   для: Владимир55   (04.06.2007 в 17:52)
 

Может быть они отдают страницы в зависимости от поля User-Agent в заголовках? Или некоторые строки создаются через javascript, поэтому скрипт не может их выполнить. Попробуй отключить JS в браузере.

   
 
 автор: Владимир55   (04.06.2007 в 17:52)   письмо автору
 
 

Обнаружил странную вещь: если скачать страницу сайта посредством оператора

$buff = file_get_contents($link); // Открываем страницу сайта

то получаем один текст. А если просто открыть эту страницу броузером IE и затем сохранить, то получаем другой текст!

И отличие в том, что в первом случае текст не полный - не хватает нескольких абзацев!

Как такое возможно???

И можно ли это как-то исправить?.

   

Сообщения:  [1-9] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования