- curl_setopt
- Возвращаемые значения
- Список изменений
- Примеры
- Примечания
- Смотрите также
- PHP CURL With Cookies (Simple Examples)
- TLDR – QUICK SLIDES
- TABLE OF CONTENTS
- PHP CURL COOKIES
- 1) SET & GET COOKIE
- 1A) LOCAL SERVER CURL CALL
- 1B) DUMMY REMOTE SERVER
- 1C) WHAT WILL HAPPEN
- 2) MANUALLY SETTING COOKIES
- 3) FLUSHING & CLEARING COOKIES
- DOWNLOAD & NOTES
- SUPPORT
- EXAMPLE CODE DOWNLOAD
curl_setopt
TRUE для отмены индикатора прогресса при передачах cURL.
Замечание:
PHP автоматически устанавливает этот параметр в TRUE , меняйте его только для отладочных целей.
Замечание:
Эта опция устарела, так как никогда не была реализована в cURL и не работала.
Используемые HTTP методы авторизации. Используемые параметры: CURLAUTH_BASIC , CURLAUTH_DIGEST , CURLAUTH_GSSNEGOTIATE , CURLAUTH_NTLM , CURLAUTH_ANY , and CURLAUTH_ANYSAFE .
Можно использовать побитовый оператор | (или) для комбинации нескольких методов вместе. В этом случае cURL опросит сервер на предмет поддерживаемых методов авторизации и выберет лучший из них.
CURLAUTH_ANY — это псевдоним CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.
CURLAUTH_ANYSAFE — это псевдоним CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.
Битовая маска из значений CURLPROTO_* . Данная маска ограничивает используемые libcurl протоколы. Это позволяет иметь libcurl, работающую с большим количеством протоколов, и ограничивать работу определенных передач только для некоторого их набора. По умолчанию, libcurl использует все поддерживаемые протоколы. Смотрите также параметр CURLOPT_REDIR_PROTOCOLS .
Корректные значения протоколов: CURLPROTO_HTTP , CURLPROTO_HTTPS , CURLPROTO_FTP , CURLPROTO_FTPS , CURLPROTO_SCP , CURLPROTO_SFTP , CURLPROTO_TELNET , CURLPROTO_LDAP , CURLPROTO_LDAPS , CURLPROTO_DICT , CURLPROTO_FILE , CURLPROTO_TFTP , CURLPROTO_ALL
Замечание:
Рекомендуется не устанавливать эту опцию и оставить значение по умолчанию. Установка в 2 или 3 опасно и допускает применение известных уязвимостей в SSLv2 и SSLv3.
Собственный метод запроса, используемый вместо «GET» или «HEAD» при выполнении HTTP-запроса. Это полезно при запросах «DELETE» или других, более редких HTTP-запросах. Корректными значениями будут слова наподобие «GET», «POST», «CONNECT» и так далее; т.е. не вводите здесь всю строку с HTTP-запросом. Например, указание «GET /index.html HTTP/1.0\r\n\r\n» будет неправильным.
Замечание:
Не используйте эту возможность пока не убедитесь, что сервер поддерживает данный тип запроса.
Тайный пароль, необходимый для использования закрытого ключа SSL, указанного параметром CURLOPT_SSLKEY .
Замечание:
Так как этот параметр содержит ценный пароль, помните, что данный PHP-скрипт нужно хранить в безопасном месте.
Для следующих значений параметра option , параметр value должен быть массивом:
Параметр | Устанавливаемое значение value | Замечания |
---|---|---|
CURLOPT_HTTP200ALIASES | Массив HTTP 200 ответов, которые будут трактоваться корректными ответами, а не ошибочными. | Добавлен в версии cURL 7.10.3. |
CURLOPT_HTTPHEADER | Массив устанавливаемых HTTP-заголовков, в формате array(‘Content-type: text/plain’, ‘Content-length: 100’) | |
CURLOPT_POSTQUOTE | Массив FTP-команд, выполняемых на сервере, после выполнения FTP-запроса. | |
CURLOPT_QUOTE | Массив FTP-команд, выполняемых на сервере, перед выполнением FTP-запроса. |
Для следующих значений параметра option , параметр value должен быть потоковым дескриптором (возвращаемым, например, функцией fopen() ):
Параметр | Устанавливаемое значение value |
---|---|
CURLOPT_FILE | Файл, в который будет записан результат передачи. По умолчанию используется поток вывода STDOUT (окно браузера). |
CURLOPT_INFILE | Файл, из которого должно идти чтение данных, при загрузке на сервер. |
CURLOPT_STDERR | Альтернативное файл для вывода ошибок, используемый вместо потока ошибок STDERR. |
CURLOPT_WRITEHEADER | Файл, в который будут записаны заголовки текущей операции. |
Callback-функция принимает пять параметров. Первый является декскриптором cURL, второй — общим количеством байт, которое ожидается загрузить с сервера, третий — количество уже загруженных байт, четвертый — общее количество байт, которое ожидается отправить на сервер, и пятый — количество уже отправленных байт.
Замечание:
Callback-функция вызывается только, если опция CURLOPT_NOPROGRESS установлена в значение FALSE .
Можно вернуть ненулевое значение, чтобы отменить передачу. В этом случае будет выставлена ошибка CURLE_ABORTED_BY_CALLBACK .
Другие значения:
Параметр | Устанавливаемое значение value |
---|---|
CURLOPT_SHARE | Результат выполнения функции curl_share_init() . Позволяет обработчику cURL использовать данные из общего обработчика. |
Возвращаемые значения
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
Список изменений
Версия | Описание |
---|---|
5.6.0 | Опция CURL_SAFE_UPLOAD теперь имеет значение по умолчанию равное TRUE . |
5.6.0 | Удалена опция CURLOPT_CLOSEPOLICY и связанные с ней значения. |
5.5.0 | Ресурс cURL добавлен первым аргументом в callback-функцию CURLOPT_PROGRESSFUNCTION . |
5.5.0 | Добавлена опция CURLOPT_SHARE . |
5.3.0 | Добавлена опция CURLOPT_PROGRESSFUNCTION . |
5.2.10 | Добавлены параметры CURLOPT_PROTOCOLS и CURLOPT_REDIR_PROTOCOLS . |
5.1.0 | Добавлены параметры CURLOPT_AUTOREFERER , CURLOPT_BINARYTRANSFER , CURLOPT_FTPSSLAUTH , CURLOPT_PROXYAUTH и CURLOPT_TIMECONDITION . |
5.0.0 | Добавлены параметры CURLOPT_FTP_USE_EPRT , CURLOPT_NOSIGNAL , CURLOPT_UNRESTRICTED_AUTH , CURLOPT_BUFFERSIZE , CURLOPT_HTTPAUTH , CURLOPT_PROXYPORT , CURLOPT_PROXYTYPE , CURLOPT_SSLCERTTYPE и CURLOPT_HTTP200ALIASES . |
Примеры
Пример #1 Инициализация сеанса CURL и загрузка web-страницы
// создание нового ресурса cURL
$ch = curl_init ();
?php
// установка URL и других необходимых параметров
curl_setopt ( $ch , CURLOPT_URL , «http://www.example.com/» );
curl_setopt ( $ch , CURLOPT_HEADER , false );
// загрузка страницы и выдача её браузеру
curl_exec ( $ch );
// завершение сеанса и освобождение ресурсов
curl_close ( $ch );
?>
Пример #2 Закачка файла
$data = array( ‘name’ => ‘Foo’ , ‘file’ => ‘@/home/user/test.png’ );
curl_setopt ( $ch , CURLOPT_URL , ‘http://localhost/upload.php’ );
curl_setopt ( $ch , CURLOPT_POST , 1 );
curl_setopt ( $ch , CURLOPT_POSTFIELDS , $data );
Результат выполнения данного примера:
Array ( [name] => Foo ) Array ( [file] => Array ( [name] => test.png [type] => image/png [tmp_name] => /tmp/phpcpjNeQ [error] => 0 [size] => 279 ) )
Примечания
Замечание:
Передача массива в CURLOPT_POSTFIELDS закодирует данные в виде multipart/form-data, тогда как передача URL-кодированной строки закодирует данные в виде application/x-www-form-urlencoded.
Смотрите также
PHP CURL With Cookies (Simple Examples)
Welcome to a tutorial on how to do PHP CURL calls with cookies. Need to do a server-to-server call that involves cookies? Well yes, CURL is fully capable of handling that with a few small tweaks.
To do a PHP CURL call with cookies, we use CURLOPT_COOKIEJAR to specify where to save the cookie after the call ends, and CURLOPT_COOKIEFILE to specify which cookie file to send to the remote server.
- $cookie = «COOKIE.TXT»;
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, «HTTP://SITE.COM»);
- curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
- curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
- curl_exec($ch);
- curl_close($ch);
That covers the basics, but read on for more examples!
TLDR – QUICK SLIDES
TABLE OF CONTENTS
PHP CURL COOKIES
All right, let us now get into the examples of handling cookies with PHP CURL.
1) SET & GET COOKIE
1A) LOCAL SERVER CURL CALL
This is just a “slightly improved” version of the introduction snippet to output the exchange results between the local and remote servers.
1B) DUMMY REMOTE SERVER
On the dummy remote server – We simply output the received cookie and send a header to set the Test cookie to the current timestamp.
1C) WHAT WILL HAPPEN
- On the first run –
- The remote server will not show any cookie values since it is a new connection.
- The remote server then responds with a set-cookie Test = NOW back to the local server.
- The local server saves Test = NOW to the cookie.txt file.
- The local server reads cookie.txt and sends it to the remote server.
- The remote server now displays the timestamp of the previous visit.
- Then sends set-cookie Test = NOW back to the local server.
- The local server updates Test = NOW in the cookie.txt file.
2) MANUALLY SETTING COOKIES
- The local server will read from cookie.txt , append keyA=valueA; keyB=valueB , and send these to the remote server.
- The remote server will now show the cookie values of Test, keyA, keyB .
- Take note of the response part – The remote server only states set-cookie Test = NOW . So the local server will only update Test in cookie.txt ; keyA keyB will not be saved.
3) FLUSHING & CLEARING COOKIES
// (C) FORCE NEW SESSION // CURLOPT_COOKIESESSION - FORCE NEW COOKIE SESSION, IGNORE LAST curl_setopt($ch, CURLOPT_COOKIESESSION, true); // CURLOPT_COOKIELIST // "ALL" ERASES ALL COOKIES IN MEMORY. // "SESS" ERASES ALL SESSION COOKIES HELD IN MEMORY. // "FLUSH" WRITES COOKIES TO CURLOPT_COOKIEJAR. // "RELOAD" RELOAD COOKIES FROM CURLOPT_COOKIEFILE. curl_setopt($ch, CURLOPT_COOKIELIST, "ALL");
Lastly, just a quick mention – If you need to clear or empty the cookies, use the CURLOPT_COOKIESESSION or CURLOPT_COOKIELIST options to do it.
DOWNLOAD & NOTES
Here is the download link to the example code, so you don’t have to copy-paste everything.
SUPPORT
600+ free tutorials & projects on Code Boxx and still growing. I insist on not turning Code Boxx into a «paid scripts and courses» business, so every little bit of support helps.
EXAMPLE CODE DOWNLOAD
Click here for the source code on GitHub gist, just click on “download zip” or do a git clone. I have released it under the MIT license, so feel free to build on top of it or use it in your own project.