When it comes to cookies, we have to start with the http protocol. What is the http protocol? Literally understood, an agreement is an agreement. If there is an agreement, there must be at least two participants, and the communication between the participants must follow such specifications.
It's like Baiyun and Kurotsuchi are together. It is stipulated that in the future, the two of them will communicate in the language they have agreed upon. If Baiyun stretches out his left hand, then Kurotsuchi will do it when he sees this action. He judged, oh, it turned out that he was going to beat his legs, so he immediately jumped on him and beat his legs. Baiyun stretched out his right hand, and Kurotsuchi looked at it and thought, Oh my god, this is the time to drink water, so he immediately handed over the water. At this time, Baiyun stretched out his left foot, and Kurotsuchi immediately kissed him. It is precisely because the communication between the two people followed each other's agreement that it became easy to understand and efficiently executed.
The same goes for the http protocol. The participants in this protocol are the client (Baiyun) and the server (Black Earth).
It is with the http protocol that the communication between the client and the server becomes easy and easy to understand. Just imagine, if Baiyun and Heitu did not standardize their communication methods in advance as agreed, then Baiyun would reach out With his left foot, Uncle Kurotsuchi probably thought he was going to kick himself.
Next, let’s take a look at what are the characteristics of the http protocol?
1. Support client/server mode;
2. Simple and fast
3. Flexible
4.No connection
5 ,no status.
Support client/server mode: To put it simply, it supports communication between two people, that is, it supports Baiyun and Heitui to talk to each other.
Simple and convenient: Just like the communication between Baiyun and Heitu, it is as simple as stretching out your left hand and right hand. The same is true for the http protocol. Whether it is a client request or a server response, setting the corresponding message header, method, and message body can be communicated to the other party, and both parties can understand the other party's meaning.
The reason for flexibility is that HTTP allows the transmission of any type of data object. The type of transmission can be marked by Content-Type.
No connection means that the client requests the server, and the server automatically disconnects the link after completing the response. It's like Bai Yun stretched out his left hand, Kurotsuchi came over to hammer his legs, and then walked away automatically to do other things.
Stateless refers to the client requesting the server. After the server responds, it will not record any data for this connection communication. Just like Baiyun stretched out his left hand, Kurotsuchi came over and hammered the legs. After hammering the legs, you asked Uncle Kurotsuchi what you said when you beat the legs. Kurotsuchi replied: I don't remember anything.
Of course, there are far more http protocols than this. We will talk about the details later. With the knowledge of the http protocol above, we will introduce our cookies.
As mentioned above, Baiyun and Kurotsuchi agreed on their own communication method, which is very efficient and simple, but their communication also has certain problems, that is, the statelessness of the http protocol, that is, Uncle Kurotsuchi When he was beating Baiyun's legs, he didn't know what was said between the two of them. His brain was not working well and he couldn't remember. He could only remember a few things. This was not a good thing. For example, when he was beating his legs, Baiyun told Kurotsuchi, "You The strength of the hand was too strong, and it hurt me so much. Please be gentler. After hearing this, the black-headed uncle immediately softened the strength of the hand, and then walked away to do other things after the hammering. As soon as Kurotsuchi left, Baiyun stretched out his left hand again. Kurotsuchi quickly came over and beat his legs, still beating his legs hard. Baiyun became anxious. Didn't I tell you just now? Put your hands gently, and the old woman's legs were numb after beating her. Uncle Kurotsuchi looked confused, "Kiss, I really don't remember."
what to do?
If this continues, Uncle Kurotsuchi will make Baiyun angry to death, so someone made a suggestion. Every time Baiyun reaches out or stretches her legs, she throws out a note, which records some of her personal requirements. , Uncle Kurotsuchi got the note, and while reading the note, he ran over and made corresponding response operations. After the response was completed, he returned the note to Bai Yun, so that Bai Yun could write down his requirements when he came to see him next time. Throw this note to Kurotsuchi.
Although this method is a bit uncivilized, it solves the problem of Uncle Kurotsuchi not being able to remember anything.
Yes, the note above is actually the cookie we are going to talk about today. When the client initiates a request to the server, the client brings the cookie to request the server. With this cookie, it can remember The status and related information of the last request are stored so that communication has status and memory.
Many people do not recommend using cookies when storing some data. The reason is that every time the client requests the server, it will bring cookie information. Although a cookie usually has a value of only 4K, Once the volume increases, it will consume a lot of bandwidth.
Then let’s explain some basic working principles of cookies:
Cookies mainly transmit data through the header HTTPHeader. That is, data is passed in request headers and message headers. The Cookie mechanism defines two headers: Set-Cookie header and Cookie header. set-cookie exists in the message header of the server response. The cookie exists in the message header of the client request.
The cookie operation process is as follows:
(1) Client Type the URL of the web server into the browser's address bar, and the browser sends a request to read the web page.
(2) After the server receives the request, it generates a Set-Cookie header, puts it in the HTTP message and sends it back to the client to initiate a session.
(3) After the client receives the response, if it wants to continue the session, it will take out the contents of Set-Cookie-ie to form a Cookie.txt file and store it in the client computer.
(4) When the client makes a request to the server again, the browser first searches the computer for the Cookie.txt file corresponding to the website. If found, a Cookie header is generated based on this Cookie.txt and placed in the HTTP request message and sent to the server.
(5) The server receives the request containing the Cookie header, retrieves the user-related information in its Cookie, and generates a page response requested by the client and passes it to the client. Every web page request made by the browser can pass the existing cookie file, for example, the browser opens or refreshes the web page operation.
This is the basic working principle of cookies.
In addition, there are two ways to set cookies in php:
1 Calling the setCookie function
2 Calling the session_start function
Here is a brief explanation of session_start Once session_start() is written, the server will generate a file named session_id on the server, and at the same time send the set-cookie header to the client, with the content of phpsessid = the file name of the session stored on the server, That is, session_id, the client will generate a cookie file when receiving the response, that is, session_start actually contains the setCookie operation, but it is not as flexible as setCookie.
Related recommendations:
Detailed explanation of cookies for PHP session control
Detailed explanation of cookie usage
The above is the detailed content of Analysis of the principles and phenomena of cookies. For more information, please follow other related articles on the PHP Chinese website!