Setting and reading cookies with PHP is extremely—dare we say it? - Simple things. We don't want to preach cookies, but they are important and useful. They are the only tools available when solving certain problems.
To create and modify a cookie, use the PHP function setcookie(). Depending on how much control you want to have over the cookie, and who can read the cookie's value, setcookie() can have up to six parameters.
The simplest way to set a cookie is as follows:
<?php setcookie('name', 'bret'); ?>
Then, before the user exits , every page in the site viewed next using this browser will have A variable $name with the value "bret" and easily accessible from PHP. Since its lifetime is one user connection, this type of cookie is called a session cookie.
If you want this cookie to remain after the user closes their browser, you must pass the third parameter to the setcookie() function, which is to set the validity date of this cookie. Since PHP's background is entirely derived from Unix ideas, this expiration date needs to be represented by the total number of seconds since January 1, 1970. If you are a Unix programmer, this algorithm may make sense to you. But if you come from the Windows or Macintosh camp, you may just shake your head and sigh, unable to understand those weird Unix guys.
But there is no need to be afraid. PHP provides a very useful function mktime(). You just pass mktime() the hours, minutes, seconds, month, date, and year you want to represent in order, and mktime() will return the total number of seconds since January 1, 1970. Therefore, if you need to simulate the Y2K problem:
<?php $y2k = mktime(0,0,0,1,1,2000); setcookie('name', 'bret', $y2k); ?>
Now, your cookie will expire in the year 2000.
If you need to update the cookie to store a new value, you only need to overwrite its original value. So even if you've just sent a cookie on a previous page, you can still change your name to "jeff".
<?php $y2k = mktime(0,0,0,1,1,2000); setcookie('name', 'jeff', $y2k); ?>
Note that doing this will not change the value of the variable $name. Its value is determined when the page loads. If you want to always determine both at the same time, you can write the following code:
<?php $name = 'jeff'; $y2k = mktime(0,0,0,1,1,2000); setcookie('name', $name, $y2k); ?>
The next two parameters of setcookie() can control the domain and directory path of the program that reads the cookie. The default setting is that only pages in the directory structure that are the same as the server that sent the cookie and at the same level or below can read its value. This is due to network security considerations. However, if you have an account with "www.domain.com" but also "other.domain.com", and the account allows processing pages from the ~/myhome directory, you should change setcookie() as follows:
<?php setcookie('name', 'jeff', $y2k, '~/myhome', '.domain.com'); ?>
The last parameter of setcookie() that we have not used yet is to set the cookie to only be sent to web servers that implement secure connections such as SSL. To use this feature, set the sixth value to 1.
Deleting cookies is very simple. Simply pass the cookie name to setcookie() and PHP will delete it.
<?php setcookie('name'); ?>
Finally, there is an important thing to note about the use of cookies. Because of the way cookies work with HTTP, you must send all cookies before you output any text. Otherwise PHP will give a warning and the cookie will not be sent. Therefore, this is the correct way to do it:
<?php setcookie('name', 'jeff'); echo "Hello Everyone!"; ?>
The following is the wrong way to do it:
<?php $today = mktime(12,0,0,6,25,1999); echo 'Here it is '.date('g:i:s a, F d, Y',$today); echo ''; echo 'In GMT it is '.gmdate('g:i:s a, F d, Y',$today); ?>
The above is the detailed content of Instructions for using cookies in php. For more information, please follow other related articles on the PHP Chinese website!