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

Форум PHP

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

 

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

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

тема: CURL
 
 автор: itica   (15.12.2006 в 18:55)   письмо автору
 
 

Для чего это нужно?

   
 
 автор: cheops   (16.12.2006 в 02:06)   письмо автору
 
   для: itica   (15.12.2006 в 18:55)
 

Это библиотека-обёртка для сокетов, т.е. более удобный способ сетевого взаимодействия. Клиент и сервер общаются при помощи специфического языка - протокола, для разных серверов и сервисов предназначены разные протоколы (HTTP, SMTP, FTP и т.п.). Обычно они скрыты как от клиента, так и от программиста. Сокеты и CURL позволяют реализовать протокол самостоятельно, т.е. создать на PHP клиента или сервер.

   
 
 автор: itica   (16.12.2006 в 10:10)   письмо автору
 
   для: cheops   (16.12.2006 в 02:06)
 

А можно поподробнее о том как этим добром пользоваться? Может есть какие статьи?

   
 
 автор: ddhvvn   (16.12.2006 в 10:14)   письмо автору
 
   для: itica   (16.12.2006 в 10:10)
 

Лучше скажите конкретную задачу для cURL. А мы Вам ее решим с комментариями :)

   
 
 автор: itica   (16.12.2006 в 10:45)   письмо автору
 
   для: ddhvvn   (16.12.2006 в 10:14)
 

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

А с cURL самому разобраться хочется.

   
 
 автор: ddhvvn   (16.12.2006 в 11:00)   письмо автору
 
   для: itica   (16.12.2006 в 10:45)
 

>нужно передавать данные другому сайту

тогда конечно можно использовать cURL.


<?php
  $datastr
="name=vladimir&data=".$data."&key1=".$value1."&name_rus=".urlencode("Владимир");

  
$ch=curl_init("http://www.my_super_site.ru");
  
curl_setopt($chCURLOPT_HEADER0);
  
curl_setopt($chCURLOPT_POST1);
  
curl_setopt($chCURLOPT_RETURNTRANSFER1);
  
curl_setopt($chCURLOPT_POSTFIELDS$datastr);
  
$buf.=curl_exec($ch);
  
curl_close($ch); 
?>


Вот примерный код.

Для справки можете посмотреть http://www.php.net/manual/ru/ref.curl.php

   
 
 автор: itica   (16.12.2006 в 11:21)   письмо автору
 
   для: ddhvvn   (16.12.2006 в 11:00)
 

Посмотрел на php.net понял только то, как инициализируется и выполняется cURL, хотелось бы поподробнее узнать можно ли и как передать например $test сайту example.com методом POST.

Может есть где статься на русском подробно описывающая данное действие?

   
 
 автор: ddhvvn   (16.12.2006 в 12:12)   письмо автору
 
   для: itica   (16.12.2006 в 11:21)
 

Я же Вам пример выше написал :-0 !

Там методом POST передаются параметры, указанные в строку $datastr.

   
 
 автор: itica   (16.12.2006 в 12:19)   письмо автору
 
   для: ddhvvn   (16.12.2006 в 12:12)
 

Простите, не разобрался...
Если не трудно, можете прокомментировать это пример?

   
 
 автор: ddhvvn   (16.12.2006 в 13:04)   письмо автору
 
   для: itica   (16.12.2006 в 12:19)
 


<?php
//создаем строку с данными
  
$datastr="name=vladimir&data=".$data."&key1=".$value1."&name_rus=".urlencode("Владимир"); 
//она содержит
/*
поле name - знaчение vladimir
data - значение переменной $data (опять же просто как пример) и т.д.
...
name_rus - содержит закодированное значение слова "Владимир" (т.к. оно написано кирилицей)
*/

//инициализируем сеанс curl
  
$ch=curl_init("http://www.my_super_site.ru");
//настраиваем его
//отключаем вывод заголовков
  
curl_setopt($chCURLOPT_HEADER0);
//включаем передачу данных методом POST
  
curl_setopt($chCURLOPT_POST1); 
//настраиваем, чтобы сеанс выводился не в браузер, а в переменную
  
curl_setopt($chCURLOPT_RETURNTRANSFER1);
//указываем строку с  POST-данными
  
curl_setopt($chCURLOPT_POSTFIELDS$datastr);
//выполняем запрос
  
$buf=curl_exec($ch);
//закрываем сеанс cURL
  
curl_close($ch);  

//теперь можно вывести результат запроса, если это необходимо
  
echo $buf;
?> 

   
 
 автор: itica   (16.12.2006 в 17:11)   письмо автору
 
   для: ddhvvn   (16.12.2006 в 13:04)
 

Спасибо огромное!!!

   
 
 автор: itica   (07.02.2007 в 13:25)   письмо автору
 
   для: itica   (16.12.2006 в 17:11)
 

А как потом можно разобрать ответ от сервера, если известно, что: "После обработки запроса Система возвращает ответ, представляющий собой набор пар <наименование параметра>=<значение>, одна пара в строке."?
Тоесть вернётся обычный массив? Или я что-то не так понимаю?

   
 
 автор: itica   (14.02.2007 в 00:20)   письмо автору
 
   для: itica   (07.02.2007 в 13:25)
 

Вообщем в $buf содержится примерно следующее: ERR = 0 SUM = 10 ID = 1
Можно ли это как-то ввиде $ERR = 0; $SUM = 10; $ID = 1; представить?
Или можно только перебором слов перед =?

   
 
 автор: Trianon   (14.02.2007 в 09:18)   письмо автору
 
   для: itica   (14.02.2007 в 00:20)
 

Так оно - одна пара на строке, или всё на одной строке скопом?
Смотреть нужно в исх. коде HTML.

   
 
 автор: itica   (14.02.2007 в 10:01)   письмо автору
 
   для: Trianon   (14.02.2007 в 09:18)
 

Вот html ответа:

<td width="100%" align="center">
<b>Тестовый запрос:</b><br><br>
ERR = 0
SUM = 10
ID = 1</td>

Все html-теги мои, тоесть ответ приходит безо всяких <br> или тому подобных, вот я и не могу понять как здесь отследить перевод строки.

   
 
 автор: Trianon   (14.02.2007 в 11:01)   письмо автору
 
   для: itica   (14.02.2007 в 10:01)
 


$buf =explode('\n', trim(str_replace('\r', '', $buf)));
foreach($buf as $key => $val)
{
    list($x, $y) = explode('=', $val);
    $x = trim($x); $y = trim($y);
    $list[$x] = $y;
}
print_r($list);

   
 
 автор: itica   (15.02.2007 в 00:06)   письмо автору
 
   для: Trianon   (14.02.2007 в 11:01)
 

Первый параметр распознается, а дальше...
Вообщем при распечатке всего массива list:

print_r($list); 

Выводит:

Array ( [ERR] => 0 SUM )

Если обратится к ERR:

echo $list['ERR'];

Выводит:

0 SUM 

Тоесть судя по всему скрипту не удаётся распознать переход строки.

   
 
 автор: Trianon   (15.02.2007 в 09:54)   письмо автору
 
   для: itica   (15.02.2007 в 00:06)
 

Каким образом в $buf оказался текст?

   
 
 автор: itica   (15.02.2007 в 10:16)   письмо автору
 
   для: Trianon   (15.02.2007 в 09:54)
 

В $buf находится ответ сервера в результате запроса, вот кусок кода:

$buf=curl_exec($ch);
curl_close($ch);  
$buf =explode('\n', trim(str_replace('\r', '', $buf)));

   
 
 автор: Trianon   (15.02.2007 в 10:21)   письмо автору
 
   для: itica   (15.02.2007 в 10:16)
 

Ага. Ясно. Это я ошибся.
вот так верно:

$buf =explode("\n", trim(str_replace("\r", '', $buf))); 

   
 
 автор: itica   (15.02.2007 в 10:34)   письмо автору
 
   для: Trianon   (15.02.2007 в 10:21)
 

Спасибо, заработало!

   
Rambler's Top100
вверх

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