CURL или учимся работать с удаленными хостамиИсточник: phpbegun
Появилась у меня недавно задача: получить данные с внешнего сайта. Всю жизнь я обычно работал с сокетами, напрямую отсылал заголовки, получал ответы. Вроде бы было все понятно и просто (хотя честно признаюсь, давно, когда только начинал, сырые заголовки web мне казались страшнее ядерной зимы). Но скучно. Главный враг и одновременно друг программиста именно скука…ну и еще лень. Скука ведет к тому, что ты начинаешь создавать что-то новое, придумываешь новые концепции…иногда конечно изобретаешь велосипед (ну куда ж без этого), но чаще пишешь стройную и логичную систему, поэтому я говорю что скука это лучший союзник, но это и враг ибо на изучение, продумывание, написание чего-то нового уходит гораздо больше времени, чем на реализацию более кривых, но рабочих решений. Но я отвлекся..так вот решил я почитать доки по curl (на сервере часто юзал эту либу, а вот в php не приходилось), дабы реализовать работу со страничкой чужого сайта на основе этой замечательной библиотеки. Итак, для начала нам нужно продумать алгоритм действий. Он достаточно просто.
Я наделюсь что в этом отрывке кода с комментариями вам все понятно. Это самый простейший вариант. Может случиться так что Вам потребуется осуществлять забор данных с сайта, защищенного http авторизацией. В этом случае до curl_exec вам следует установить еще два параметра:
Так же часто требуется не просто слать пустой запрос, но и посылать post или get параметры. Для этого, надо указать так же дополнительные опции:
Теперь, я думаю, вы ощущаете насколько удобна данная библиотека. И это при том? что я описал лишь малую толику возможных параметров, на самом же деле их гораздо больше. Например, можно использовать proxy или работать с фтп Более подробно вы можете прочесть в мануале по функции curl_setopt или в документации на офф сайте php. Зачастую список параметров гораздо удобнее передавать массивом, для этого сушествует curl_setopt_array Ключами в данном случае должны быть имена параметров, а значения-те значения, которые вы считаете нужным присвоить данным параметрам. Если соединение не проходит обычно требуется разобраться в чем дело. Поэтому после отправки запроса стоит использовать функции curl_error и curl_errno
Теперь если возникнет ошибка вы сразу сможете просмотреть ее код и текст. Пожалуй все на сегодня. Надеюсь что Вам стали понятны основы работы с curl… а дальше, все в ваших руках. Удачи в изучении PHP:) |