- PHP cURL Part 6(Cookies saving and sending)
- Response:
- Explanation:
- Creating a temporary file to save cookies
- Getting cookies and saving in the file
- Using cookies for a curl request
- 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
- EXTRA BITS & LINKS
- LINKS & REFERENCES
- INFOGRAPHIC CHEAT SHEET
- THE END
- Leave a Comment Cancel Reply
- Search
- Breakthrough Javascript
- Socials
- About Me
- Отправка cookie через cURL
- Комментарии ( 1 ):
PHP cURL Part 6(Cookies saving and sending)
So far, we’ve learned the following features of PHP cURL in this series of articles.
In this article, we’ll learn how to perform save & send cookies using PHP cURL. Sometimes websites use cookies to save user-specific information and then use those saved cookies to load resources for users. So, in this case, we can’t access website resources directly. We first need to get cookies from that site and then we’ll send those cookies in our upcoming cURL requests. Following is a very basic example for cookies.
$cookie_jar = tempnam('/tmp','coo'); // getting cookies $curl = curl_init('http://httpbin.org/cookies/set?site=coderanks'); curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_jar); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($curl); curl_close($curl); //sending cookies $curl = curl_init('http://httpbin.org/cookies'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_jar); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $response = curl_exec($curl); curl_close($curl); echo '',$response;
Response:
Explanation:
In the above script, we've performed the following three steps.
- Creating a temporary file to save cookies
- Getting cookies and saving in the file(created in the first step)
- Using cookies(saved in the second step) for a new curl request.
Let's discuss each step in details with code.
Creating a temporary file to save cookies
We need to save cookies somewhere for future use, so for this, we're going to create a temporary file. This step can be with the following piece of code.
$cookie_jar = tempnam('/tmp','coo');
tempnam is a built-in PHP function that is used to create a unique empty file. Its first parameter is file path(default is System's directory) and the second parameter is the prefix of the file. So it will create a file in C:\Windows\Temp with a unique name prefixed with coo and will return its full path. Here is an example file created by tempname.
Getting cookies and saving in the file
Temporary file created in the first step will be empty. Now, in this step, we'll get cookies from URL and will save them in that file. Following piece of code will help us to do that.
// getting cookies $curl = curl_init('http://httpbin.org/cookies/set?site=coderanks'); curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_jar); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($curl); curl_close($curl);
Following options are already discussed in previous parts. Here is a simple detail for both options.
- CURLOPT_RETURNTRANSFER: used to direct cURL to not display response(default) but return after execution.
- CURLOPT_SSL_VERIFYPEER: used to enable or disable SSL.
CURLOPT_COOKIEJAR
This option is used to set the cookies file, which will be used by the cURL to save automatically parsed cookies.
So after executing the above script, there will be some text in that file, similar to below one.
# Netscape HTTP Cookie File # https://curl.haxx.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. httpbin.org FALSE / FALSE 0 site coderanks
Using cookies for a curl request
Now we've cookies saved in a file, we can use that file to send cookies for any cURL request. here is the script for sending cookies.
//sending cookies $curl = curl_init('http://httpbin.org/cookies'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_jar); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $response = curl_exec($curl); curl_close($curl); echo '',$response;
CURLOPT_COOKIEFILE is used to set the cookies file to attach cookies in the cURL request. Here is the response to this request.
Note: Normal sites don't return cookies when you send them. We've used Httpbin.org for the testing purpose of this article to show you that how actually cookies saved and passed. In the real-life example, you'll pass cookies and get the site resources after executing, not cookies.
That's all for this part of the article.
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.
EXTRA BITS & LINKS
That’s all for the main tutorial, and here is a small section on some extras and links that may be useful to you.
LINKS & REFERENCES
INFOGRAPHIC CHEAT SHEET
THE END
Thank you for reading, and we have come to the end. I hope that it has helped you to better understand, and if you want to share anything with this guide, please feel free to comment below. Good luck and happy coding!
Leave a Comment Cancel Reply
Search
Breakthrough Javascript
Take pictures with the webcam, voice commands, video calls, GPS, NFC. Yes, all possible with Javascript - Check out Breakthrough Javascript!
Socials
About Me
W.S. Toh is a senior web developer and SEO practitioner with over 20 years of experience. Graduated from the University of London. When not secretly being an evil tech ninja, he enjoys photography and working on DIY projects.
Code Boxx participates in the eBay Partner Network, an affiliate program designed for sites to earn commission fees by linking to ebay.com. We also participate in affiliate programs with Bluehost, ShareASale, Clickbank, and other sites. We are compensated for referring traffic.
Отправка cookie через cURL
Наверняка, Вы знаете, что контент страницы, отдаваемой сервером, иногда зависит от cookie, присланных клиентом (в частности, браузером). Это аналогично тому, что видит неавторизованный пользователь и авторизованный. Вот в этой статье мы с Вами научимся отправлять cookie через cURL.
Давайте для начала разберёмся с файлом-приёмником. Данный файл будет считывать cookie пользователя, и если это данные администратора, то выводить один контент, а если нет, то возвращать другой:
Теперь создадим скрипт, который будет отправлять cookie через cURL сначала "Администраторские", а потом другие.
if( $curl = curl_init() ) curl_setopt($curl, CURLOPT_URL, 'http://temp.local/script.php');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);curl_setopt($curl, CURLOPT_COOKIE, "login=Admin;password=123456");
$out = curl_exec($curl);
echo $out;
curl_setopt($curl, CURLOPT_COOKIE, "login=some;password=123456");
$out = curl_exec($curl);
echo $out;Код здесь достаточно прозрачный, однако, на некоторых моментах, пожалуй, остановлюсь. В частности, обратите внимание, как задаются cookie. То есть формат такой: "name1=value1;name2=value2". Потому что иногда люди путают и вместо ";" ставят "&". И, главное, Вы должны усвоить, что один и тот же URL для одного пользователя будет содержать один контент, а для другого совсем другой. И зависит это от заголовков, посланных на сервер, в частности, cookie, которые обычно посылает браузер, но в нашем случае посылается с cURL.
После этой статьи у Вас открываются фантастические возможности по автоматизации определённых вещей. Простой пример: есть сайт, на котором находится определённая информация, доступная только зарегистрированным пользователям. Эта информация Вам нужна постоянно, но Вам не хочется постоянно заходить на сайт, авторизовываться и искать эту информацию. Вы можете написать простой скрипт, который подключится к нужному URL и передаст нужные cookie, чтобы сервер принял Вас за авторизованного пользователя. Далее сервер вернёт Вам нужную страницу с нужной Вам информацией, которую Вы и выводите. Таким образом, Вам надо будет только обновить страницу со скриптом, чтобы сразу увидеть нужную Вам информацию.
Создано 12.03.2011 14:51:28
- Михаил Русаков
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - BB-код ссылки для форумов (например, можете поставить её в подписи):
Комментарии ( 1 ):
Здравствуйте. А можете добавить статью, как получать cookie и сохранять его в файл и как этот файл использовать в дальнейшем
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.