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

Форум PHP

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

 

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

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

тема: прокси и file_get_contents
 
 автор: Лена   (03.12.2008 в 16:29)   письмо автору
 
 

Раньше, если я грузила страницу через file_get_contents, все работало нормально.
Теперь не работает. Думаю, все дело в прокси.
Допустим, пишу:

<?php
$content 
file_get_contents('http://www.budshop.com.ua/content/blogcategory/62/153/'); 
echo 
$content
?>

Выдает вот что: Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Этот хост неизвестен. in Z:\home\avart.ua\www\c.php on line 2

Warning: file_get_contents(http://www.budshop.com.ua/content/blogcategory/62/153/) [function.file-get-contents]: failed to open stream: No error in Z:\home\avart.ua\www\c.php on line 2

Файерволл у меня отключен.
В php.ini:
allow_url_fopen = On
allow_url_include = Off

В поиске предлагается в случае с прокси использовать или сокеты, или curl-функции. Хочу вначале спросить: что лучше?
Если кто-то знает, скажите по одному и второму минусы и плюсы, чтобы я выбрала.

  Ответить  
 
 автор: Trianon   (03.12.2008 в 16:48)   письмо автору
 
   для: Лена   (03.12.2008 в 16:29)
 

сокеты и curl - вещи несравнимые.
Примерно как швейная машинка и костюм.
Выбрав сокеты Вам придется самостоятельно реализовывать весьма непростой протокол http (RFC-2616) .
Библиотека cURL - представляет собой уже готовую реализацию.

Выбор кагбэ очевиден.

  Ответить  
 
 автор: Лена   (03.12.2008 в 17:30)   письмо автору
 
   для: Trianon   (03.12.2008 в 16:48)
 

Со сложным я не справлюсь, это понятно.
Библиотеку cURL , получается, надо специально подключать? У меня третий Денвер, что-то я там ее не вижу.
Где взять эту библиотеку? Если ссылка есть, дайте, пожалуйста.

  Ответить  
 
 автор: sim5   (03.12.2008 в 18:09)   письмо автору
109.8 Кб
 
   для: Лена   (03.12.2008 в 17:30)
 

-

  Ответить  
 
 автор: Trianon   (03.12.2008 в 18:27)   письмо автору
 
   для: Лена   (03.12.2008 в 17:30)
 

http://www.denwer.ru/packages/php5.html

  Ответить  
 
 автор: Лена   (04.12.2008 в 11:54)   письмо автору
 
   для: Trianon   (03.12.2008 в 18:27)
 

Скачала пакет расширений Денвера, установила.
Раскомментировала в php.ini строчку: extension=php_curl.dll
Там же extension_dir = "/usr/local/php5/ext"
Проверила: в C:/Windows/system32/ у меня есть файлы ssleay32.dll и libeay32.dll, туда же бросила php_curl.dll.
Вызвала phpinfo() - curl там есть.

<?php
$ch 
curl_init("http://www.budshop.com.ua/content/blogcategory/62/153/");
$fp fopen("example_homepage.txt""w");

curl_setopt($chCURLOPT_FILE$fp);
curl_setopt($chCURLOPT_HEADER0);

curl_exec($ch);
curl_close($ch);
fclose($fp);
?>


example_homepage.txt - пустой, сама страница тоже пустая, в результирующем коде такое:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1251"></HEAD>
<BODY></BODY></HTML>

  Ответить  
 
 автор: Trianon   (04.12.2008 в 11:59)   письмо автору
 
   для: Лена   (04.12.2008 в 11:54)
 

стоп, а прокси-то у Вас какой?
В свойствах браузера что прописано?

  Ответить  
 
 автор: Лена   (04.12.2008 в 12:06)   письмо автору
 
   для: Trianon   (04.12.2008 в 11:59)
 

Вам нужно цифры сказать? В смысле номер порта?
А если я скажу эти цифры, это будет безопасно? Никто потом по этим цифрам не сможет подключиться?

  Ответить  
 
 автор: Trianon   (04.12.2008 в 12:09)   письмо автору
 
   для: Лена   (04.12.2008 в 12:06)
 

можете вписать сюда адрес и порт, не обнародуя их .

<?php

function get_url($url)
{
   
$proxy_address "proxy";
   
$proxy_port "3128";
   
$r curl_init();
   
curl_setopt($rCURLOPT_NOPROGRESS0);
   
curl_setopt($rCURLOPT_RETURNTRANSFER1);
   
curl_setopt($rCURLOPT_URL$url);
   
curl_setopt($rCURLOPT_URL$url);
   
curl_setopt($rCURLOPT_PROXY"$proxy_address:$proxy_port");

   
$res curl_exec($r);
   return 
$res;
}
echo 
get_url("http://ya.ru");
?>

  Ответить  
 
 автор: Лена   (04.12.2008 в 12:32)   письмо автору
 
   для: Trianon   (04.12.2008 в 12:09)
 

Получилось, спасибо.
У вас строчка повторяется: curl_setopt($r, CURLOPT_URL, $url);
По вот этому
curl_setopt($r, CURLOPT_NOPROGRESS, 0);
curl_setopt($r, CURLOPT_RETURNTRANSFER, 1);
есть вопрос: Что такое CURL-трансфер?

  Ответить  
 
 автор: Trianon   (04.12.2008 в 12:41)   письмо автору
 
   для: Лена   (04.12.2008 в 12:32)
 

и мануала:
CURLOPT_RETURNTRANSFER: При установке этого параметра в ненулевое значение CURL будет возвращать результат, а не выводить его.

А повторяющаяся строчка - случайно. Когда прокси добавлял, дважды скопировал. Рука дрогнула

  Ответить  
Rambler's Top100
вверх

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