Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Функция file()

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Проблема =(
OnArs
Отправлено: 22 Ноября, 2008 - 17:50:45
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Окт. 2008  
Откуда: Санкт-Петерубрг


Помог: 0 раз(а)




Здравствуйте!

Код банален до нельзя Улыбка
PHP:
скопировать код в буфер обмена
  1. <?
  2. $lines = file("http://www.rket.com/");
  3. echo $lines[1];
  4. ?>


Ошибка: Огорчение
PHP:
скопировать код в буфер обмена
  1. Warning: file(http://www.mermarket.com/) [function.file]: failed to open stream: HTTP request failed! in /home/e1buytol/public_html/parse.php on line 2


Такая проблема возникает именно с этим доменом, к примеру, yandex открывается нормально.
Пожалуйста, подскажите в чём проблема! Растерялся
Заранее благодарен! Улыбка

(Отредактировано автором: 22 Ноября, 2008 - 23:46:57)

 
 Top
evgenijj
Отправлено: 22 Ноября, 2008 - 19:06:03
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Функция file() при получении содержимого страницы с удаленного хоста отправляет среди прочих заголовок
X-Powered-By: PHP/5.2.1
Многие сайты отслеживают наличие такого заголовка (или отсутствие USER_AGENT И т.п.) и не отдают по такому запросу контент. Используй CURL и формируй заголовки (типа USER_AGENT и т.п.), маскируясь под браузер, чтобы нельзя было распознать, что это скрипт, а не браузер.

(Отредактировано автором: 22 Ноября, 2008 - 19:07:36)

 
 Top
Agassi
Отправлено: 22 Ноября, 2008 - 19:41:25
Post Id



Частый гость


Покинул форум
Сообщений всего: 158
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




evgenijj пишет:
Используй CURL и формируй заголовки


Правильно саказал,недавно тоже так пробовал.И СURL очень помог
 
 Top
OnArs
Отправлено: 22 Ноября, 2008 - 19:45:25
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Окт. 2008  
Откуда: Санкт-Петерубрг


Помог: 0 раз(а)




Окей, Я понял.

Пытаюсь заходить вот таким образом, т.е. используя Сокеты.

PHP:
скопировать код в буфер обмена
  1. <?
  2. @ini_set("display_errors","1");
  3. $responce = "";
  4.   $fsock    = fsockopen("www.ermarket.com",80,$errnum,$errstr,2);
  5.   $headers  = "GET http://www.morket.com/ HTTP/1.1\n";
  6.   $headers .= "Host: www.monet.com\n";
  7.   $headers .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\n";
  8.   $headers .= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\n";
  9.   $headers .= "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\n";
  10.   $headers .= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\n";
  11.   $headers .= "Keep-Alive: 500\n";
  12.   $headers .= "Connection: close\n";
  13.   $headers .= "Content-Type: application/x-www-form-urlencoded\r\n\r\n";
  14.   fwrite   ($fsock,$headers);
  15.   while    (!feof($fsock)) $responce .= fread($fsock,1024);  
  16.   fclose   ($fsock);
  17. echo $responce;
  18. ?>


Могу получить данные только главной страницы. А мне нужны данные с http://www[dot]moneysupermarket[dot]com/mortgages/
Как правильно переписать код? Оо

Заранее благодарен!
(Добавление)
Хм... Или подскажите как на CURL сформировать нужный мне запрос... Огорчение

(Отредактировано автором: 22 Ноября, 2008 - 23:47:23)

 
 Top
evgenijj
Отправлено: 22 Ноября, 2008 - 20:09:00
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




OnArs пишет:
Могу получить данные только главной страницы. А мне нужны данные с http://www.moneysupermarket.com/mortgages/

Смотри, не устанавливает ли тот сайт cookie. Или не стартует ли сессию? Просматривай обмен заголовками и формируй аналогичные заголовки.

(Отредактировано автором: 22 Ноября, 2008 - 20:11:50)

 
 Top
OnArs
Отправлено: 22 Ноября, 2008 - 20:13:21
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Окт. 2008  
Откуда: Санкт-Петерубрг


Помог: 0 раз(а)




И всё же как осуществить задуманное на CURL? Однако
 
 Top
Agassi
Отправлено: 22 Ноября, 2008 - 20:16:47
Post Id



Частый гость


Покинул форум
Сообщений всего: 158
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.     $ch = curl_init();
  2. curl_setopt($ch, CURLOPT_URL, "http://***.ru?");
  3. curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1);
  4. $user=curl_exec($ch);


Я так делал
 
 Top
evgenijj
Отправлено: 22 Ноября, 2008 - 20:27:39
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




OnArs пишет:
И всё же как осуществить задуманное на CURL?

Хм... Тогда вопрос надо написать в разделе
Напишите за меня пожалуйста
А если есть желание сделать самому
Библиотека CURL (Client URL Library)
Использование CURL
Как устанавливать cookie:
Авторизация на стороннем сайте
Ну и поищи по ключевым словам "cookie jar"

(Отредактировано автором: 22 Ноября, 2008 - 20:28:40)

 
 Top
valenok Модератор
Отправлено: 22 Ноября, 2008 - 23:59:46
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




evgenijj
Цитата:
Многие сайты отслеживают наличие такого заголовка (или отсутствие USER_AGENT И т.п.) и не отдают по такому запросу контент.

Сомневаюсь что дело именно в этом, Как минимум потому что хоть бы какой то ответ от сервера был бы и скрипт бы не вылетал с ошибкой функции. Во вторых вряд ли кто-то зачем-то вообще отслеживается такие заголовки и отсутствие агента, так как они очень легко подделываются и обходятся тем же самым curl-ом, и в третьих просто потому что у меня этот код работает, и второй строчке тег <body>


OnArs
Несмотря на то что другие сайты у вас работают
Скорее всего дело в директиве allow_url_fopen , так как ошибка соответствует данному случаю
http://php.net/manual/ru/filesys....allow-url-fopen

Попробуйте код на другом сервере, на домашнем компьютере и обратитесь к хостинг провайдеру.
Возможно у него заблокированы исходящие соединения на тот ip
или у того сервера фаервол настроен на блокировку сервером твоего провайдера.


-----
Truly yours, Sasha.
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB