Постинг на php помогите - вопрос №877828

Нужно сделать постинг на доску обьявлений zor.uz/offer/add/

Авторизацию через curl сделал, а как передать данные и постить объявление не могу понять, помогите пожалуйста

вот код авторизации:

 

include 'simple_html_dom.php';<br /><br />echo ("asdasdasdфывфывфывфывфвы");<br /><br /><br /><br />//авторизовываемся<br />$url = "zor.uz/login/"; <br />$ch = curl_init(); <br /><br />curl_setopt($ch, CURLOPT_URL,$url);<br />curl_setopt($ch, CURLOPT_POST, 1);<br />curl_setopt($ch, CURLOPT_USERAGENT, "Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.7.62 Version/11.00");<br />curl_setopt($ch, CURLOPT_REFERER,"zor.uz/");<br />curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt'); // сохранять куки в файл <br />curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');<br />curl_setopt($ch, CURLOPT_TIMEOUT, 3); <br /><br /><br /><br />curl_setopt($ch, CURLOPT_ENCODING, 'gzip');<br /> curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);<br /> curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);<br /><br />curl_setopt($ch, CURLOPT_POSTFIELDS, array(<br />'email'=>'test123@inbox.ru',<br />'password'=>'12312555'));<br />curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);<br />$result = curl_exec($ch);<br />//curl_close($ch); <br />echo ($result);
18.12.13
1 ответ

Ответы

Curl (Client URLs) это клиентская библиотека для работы с URL. PHP поддерживает библиотеку через расширение libcurl. Чтобы включить поддержку libcurl при установке PHP, добавьте параметр –with-curl=[расположение библиотек curl] перед компиляцией. Пакет Curl должен быть установлен до PHP.

Большинство основных функций, которые требуются при подключении к удаленным веб-серверам, содержатся в Curl, включая POST и GET для отправки форм, SSL поддержку, HTTP-аутентификацию и обработку сессии и куки.

Чтобы запустить curl сессию используйте функцию curl_init(). Параметры curl сессии задаются через PHP функцию curl_setopt(). После установки параметров запрос выполняется с помощью функции curl_exec().

Пример:

Код12345678<? $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, '<a href="http://www.example.com">http://www.example.com</a>'); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec(); curl_close($ch); ?>

В этом примере мы сначала установили дескриптор сессии в $ch. Затем командой curl_setopt мы задали URL запроса www.example.com. Заголовок CURLOPT_HEADER определяет, должен ли возвращаться заголовок ответа сервера. По умолчанию curl будет выводить ответ прямо в браузер при выполнении сценария. Чтобы противостоять этому мы включили параметр CURLOPT_RETURNTRANSFER. Теперь при выполнении оператора curl_exec() возвращаемые с удаленного сервера данные будут сохраняться в переменной $data, а не выводиться в браузер.

Curl и данные формы
Теперь, когда мы можем получать статические страницы с удаленных серверов, давайте попробуем автоматически отправить сообщение через веб-формы. Методом по умолчанию для отправки форм в curl является GET. В следующем примере мы отправим текстовое сообщение на наш мобильный телефон с помощью веб-формы. Наш пример веб-формы требует, чтобы данные были представлены в POST формате, и содержит поля pNUMBER, MESSAGE, SUBMIT.

Код01020304050607080910111213<? $phoneNumber = '4045551111'; $message = 'This message was generated by curl and php'; $curlPost = 'pNUMBER=' . urlencode($phoneNumber). '&MESSAGE=' . urlencode($message). '&SUBMIT=Send'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, '<a href="http://www.example.com/sendSMS.php">http://www.example.com/sendSMS.php</a>'); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); $data = curl_exec(); curl_close($ch); ?>

Здесь мы заполняем переменные формы для номера телефона и сообщения. Переменная $curlPost используется для хранения POST данных, с которыми будет работать curl. При формировании переменной $curlPost, которая будет затем использоваться в curl_setopt, не забудьте перекодировать данные с помощью функции urlencode перед тем как передать их в функцию curl_setopt. CURLOPT_POST это параметр, который указывает curl, что для отправки будет использоваться метод POST. Параметр CURLOPT_POSTFIELDS используется для хранения POST данных.

Curl и прокси-сервера
Как и во всех других полнофункциональный браузерах, в curl есть поддержка прокси-серверов. Прокси-сервер это буфер между клиентом, выполняющим запрос, и веб-сервером. Прокси-серверы используются для различных целей, включая компании, ограничивающие доступ к Интернету для тех пользователей, которые хотят делать это анонимно.

В curl можно установить несколько параметров для работы с прокси-серверами. Во-первых, чтобы разрешить использование прокси-серверов в curl используйте параметр CURLOPT_HTTPPROXYTUNNEL. Затем настройте прокси-сервер с помощью параметра CURLOPT_PROXY. Если необходимо настроить данные для аутентификации, используйте параметр CURLOPT_PROXYUSERPWD. Данный параметр ожидает строку в формате user:password. По умолчанию используются HTTP прокси, для использования SOCKS прокси применяйте параметр CURLOPT_PROXYTYPE.

Пример:

Код0102030405060708091011<? $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, '<a href="http://www.example.com">http://www.example.com</a>'); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080'); curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password'); $data = curl_exec(); curl_close($ch); ?>

SSL
Чтобы включить SSL просто измените http:// на https:// в параметре CURLOPT_URL. При работе с SSL в curl наиболее часто используется параметр CURLOPT_SSL_VERIFYHOST, который при значении 1 проверяет существование общего имени в сертификате, а при значении 2 он проверяет существование общего имени и соответствие общего имени в сертификате имени хоста сервера. Параметр CURLOPT_SSLVERSION может применяться для переключения между SSL версиями 2 и 3, это, как правило, автоматически согласовывается в PHP.

Cookies
Curl также включает в себя поддержку Cookies. Работать с Cookie в curl очень просто. В curl есть три встроенных параметра – CURLOPT_COOKIE, CURLOPT_COOKIEJAR и CURLOPT_COOKIEFILE. Параметр CURLOPT_COOKIE используется для установки куки для текущей сессии. CURLOPT_COOKIEJAR хранит расположение файла для полученных куки, когда сессия закрыта. CURLOPT_COOKIEFILE хранит расположение файла, содержащего куки, при использовании формата Netscape или сырых заголовков HTTP.

Аутентификация с curl
Поддерживаются все популярные методы HTTP аутентификации, включая базовую HTTP аутентификацию, дайджест, GSS и NTLM. Как и для других настроек, используется функция curl_setopt. Для установки метода аутентификации выполните curl_setopt(CURLOPT_HTTPAUTH, CURLAUTH_BASIC), при этом будет задана базовая аутентификация. Различные типы аутентификации могут быть заданы с помощью селектора | “или”. Учетные данные устанавливаются с помощью curl_setopt(CURLOPT_USERPWD, ‘[username]:[password]‘).

Другие параметры аутентификации включают CURLAUTH_DIGEST, CURLAUTH_GSSNEGOTIATE, CURLAUTH_NTLM для дайджеста, GSS и NTLM соответственно. Наряду с этими параметрами существует также CURLAUTH_ANY, который является псевдонимом CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM и CURLAUTH_ANYSAFE – псевдоним для CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

Пример 1:

Код01020304050607080910<? $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, '<a href="http://www.example.com">http://www.example.com</a>'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt(CURLOPT_USERPWD, '[username]:[password]') $data = curl_exec(); curl_close($ch); ?>

Пример 2:

Код01020304050607080910<? $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, '<a href="http://www.example.com">http://www.example.com</a>'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_setopt(CURLOPT_USERPWD, '[username]:[password]') $data = curl_exec(); curl_close($ch); ?>

В первом примере мы просто пытаемся пройти проверку подлинности с базовой аутентификацией, но во втором примере мы собираемся попробовать все возможные методы аутентификации.

07.11.16

Дима

Бесплатно
Читать ответы
Посмотреть всех экспертов из раздела Технологии > PHP
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store