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

Форум Регулярные Выражения

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Проблема с file_get_contents ()
 
 автор: dima_s_d_s   (26.01.2007 в 22:20)   письмо автору
 
 

Пытаюсь открыть страницу фун-цией file_get_contents (), а оно вместо заданой страници всегда открывает главну. В чем может быть дело?
Я так думаю там стоит защита, и нужно работать через соккеты. Если причина в этом, то прошу привести простенький пример работы с соккетами.

Заранее благодарен.

   
 
 автор: Саня   (26.01.2007 в 22:46)   письмо автору
 
   для: dima_s_d_s   (26.01.2007 в 22:20)
 

А поиском пользоваться пробовали?

   
 
 автор: dima_s_d_s   (26.01.2007 в 23:03)   письмо автору
 
   для: Саня   (26.01.2007 в 22:46)
 

Вот нашл пример, только не могу понять куда тут считывается страница?
На сколько я понял данные пишутся в переменную $fp так?

<?  

$fname 
'/playerinfo.php?playername=LordOS';  
$fhost =  'www.neverlands.ru';  

$x 0;  
$fp fsockopen($fhost80, &$errno, &$errstr30) or die("could not connect");  

fputs($fp,"HEAD $fname HTTP/1.0\nHOST: $fhost\n\n");  
while (!
feof($fp)) $x .= fgets($fp,128);  
fclose($fp);  
?> 

   
 
 автор: Саня   (27.01.2007 в 01:46)   письмо автору
 
   для: dima_s_d_s   (26.01.2007 в 23:03)
 

$fp - это дескриптор открытого сокета. В нём находится ответ сервера на последний запрос.
В цикле по 128 байт читаем данные из буффера и добавляем к переменной $x.

   
 
 автор: dima_s_d_s   (27.01.2007 в 01:48)   письмо автору
 
   для: Саня   (27.01.2007 в 01:46)
 

Не очень понятно. Как мне считать всю страницу в переменную?
Если взять тот скрипт, то данные будут храниться в переменной $x?

   
 
 автор: kasmanaft   (27.01.2007 в 09:25)   письмо автору
 
   для: dima_s_d_s   (27.01.2007 в 01:48)
 

Да, данные полученные HEAD запросом... Для того, чтобы скачать страницу, нужно использовать метод GET.

Location: /pinfo.cgi?LordOS
// переадресация //

   
 
 автор: dima_s_d_s   (27.01.2007 в 10:36)   письмо автору
 
   для: kasmanaft   (27.01.2007 в 09:25)
 

Кто может привести пример загрузки страници через соккет?

   
 
 автор: kasmanaft   (27.01.2007 в 11:25)   письмо автору
 
   для: dima_s_d_s   (27.01.2007 в 10:36)
 


<?php
$fname 
'/pinfo.cgi?LordOS';
$fhost 'www.neverlands.ru';
$x '';
$fp fsockopen($fhost80, &$errno, &$errstr30) or die("could not connect");
fputs($fp,"GET $fname HTTP/1.0\r\nHOST: $fhost\r\n\r\n");
while (!
feof($fp)) $x .= fgets($fp,128);
fclose($fp);
echo 
substr($xstrpos($x"\r\n\r\n"));
?>

   
 
 автор: dima_s_d_s   (27.01.2007 в 11:59)   письмо автору
 
   для: kasmanaft   (27.01.2007 в 11:25)
 

Пробовал этот пример. Этаже ситуация. Вместо заданной считывает главную. Что может быть?

   
 
 автор: Саня   (28.01.2007 в 13:54)   письмо автору
 
   для: dima_s_d_s   (27.01.2007 в 11:59)
 

Возможно там стоит проверка на реферер и user-agent.
<?php 
$fname 
'/pinfo.cgi?LordOS'
$fhost 'www.neverlands.ru'
$x ''
$fp fsockopen($fhost80, &$errno, &$errstr30) or die("could not connect"); 
fputs($fp"GET $fname HTTP/1.0\r\n".
           
"Host: $fhost\r\n".
           
"Referer: http://www.neverlands.ru/\r\n".
           
"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.01\r\n\r\n"); 
while (!
feof($fp)) $x .= fgets($fp,128); 
fclose($fp); 
echo 
substr($xstrpos($x"\r\n\r\n")); 
?>

   
 
 автор: dima_s_d_s   (28.01.2007 в 20:50)   письмо автору
 
   для: Саня   (28.01.2007 в 13:54)
 

Супер. Теперь всё работает. Спасибо.

   
 
 автор: dima_s_d_s   (03.02.2007 в 19:27)   письмо автору
 
   для: Саня   (28.01.2007 в 13:54)
 

Столкнулся с сайтом где даже такой вариант не работает. Может он проверяет еще что-то?

   
 
 автор: dima_s_d_s   (04.02.2007 в 10:28)   письмо автору
 
   для: dima_s_d_s   (03.02.2007 в 19:27)
 

Кто подскажет какие дополнительные параметры можно добавить в этот код (общение с соккетом)


<?php  
$fname 
'/pinfo.cgi?LordOS';  
$fhost 'www.neverlands.ru';  
$x '';  
$fp fsockopen($fhost80, &$errno, &$errstr30) or die("could not connect");  
fputs($fp"GET $fname HTTP/1.0\r\n"
           
"Host: $fhost\r\n"
           
"Referer: http://www.neverlands.ru/\r\n"
           
"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.01\r\n\r\n");  
while (!
feof($fp)) $x .= fgets($fp,128);  
fclose($fp);  
echo 
substr($xstrpos($x"\r\n\r\n"));  
?> 

   
 
 автор: kasmanaft   (04.02.2007 в 12:04)   письмо автору
 
   для: dima_s_d_s   (04.02.2007 в 10:28)
 

Странно вообще... у меня работал тот код, что я приводил. Без реферера и юзер агента.
Если ты зарегистрирован там, попробуй отправить куки:

"Cookie: username=LordOS;password=qwerty;\r\n".

Ну, естесственно, вместо username и password нужно подставить реальные их названия ... может быть еще чего-то добавить придется.

> Столкнулся с сайтом где даже такой вариант не работает.
Можно взглянуть на этот сайт, или уже не нужно?

   
Rambler's Top100
вверх

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