Summary
Cookies are a way for servers or scripts to maintain information on client workstations under the HTTP protocol. Cookies are small files saved on the user's browser by the Web server, which can contain information about the user (such as identification number, password, how the user purchases on the Web site or the number of times the user visits the site). Whenever a user connects to the server, the Web site can access the cookie information.
How to set cookies?
In PHP, you can use the setcookie function to set a cookie. Cookies are part of the HTTP headers, so the cookie function must be set before any content is sent to the browser. This restriction is the same as the header() function. Any cookie passed from the client will automatically be converted into a PHP variable. PHP obtains the information header and analyzes it, extracts the cookie name and turns it into a variable. Therefore, if you set a cookie such as setcookie("mycookie", "Cookies") php will automatically generate a variable named $mycookie with the value "Cookies".
Let’s take a look at the setcookie function syntax:
init setcookie(string CookieName,string CookieValue,int CookieExpireTime,path,domain,int secure);
Parameter description:
PATH: Indicates the directory on the web server, which defaults to the location of the called page Directory
DOMAIN: The domain name that the cookie can use, the default is the domain name of the called page. This domain name must contain two ".", so if you specify your top-level domain name, you must use ".mydomain.com" SECURE: If set to "1", it means that the cookie can only be considered safe by the user's browser Remembered by the server.
Example of cookie usage
Suppose we have such a site that requires registration, which automatically identifies the user's identity and performs related operations: if it is a registered user, send him information; if it is not already registered User, a link to the registration page is displayed.
According to the above requirements, we first create a database to save registered user information: first name, last name, email address, visit counter.
First follow the steps below to create a table:
mysql> create database users;
Query OK, 1 row affected (0.06 sec)
mysql> use users;
Database changed
l>create table info (FirstName varchar(20), LastName varchar (40), email varchar(40), count varchar(3));
Query OK, 0 rows affected (0.05 sec)
Then build a php page to check the cookies against the database.
Since PHP can convert identifiable cookies into corresponding variables, we can check a variable named "myCookies":
<? if (isset($myCookies)) { // If the cookie already exists
……
} else { //If the cookie does not exist
……
}
?>
When the cookie exists, we perform the following steps:
First get the cookie value, use the explode function to analyze it into different variables, increase the counter, and set a new cookie :
$info = explode("&", $myCookies);
……
$count++;
$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;
SetCookie ("myCookies",$CookieString, time()+3600); //Set cookies
Then use html statements to output user information.
Finally, update the database with the new counter value.
If this cookie does not exist, we display a link to the registration page (register.php).
The register.php below is the user registration page:
/* register.php */
<form method="post" action="regOK.php">
First Name:<input type="text" name="FirstName ">
Last Name:<input type="text" name="LastName">
<input type="submit" value="Register">
</form>
The information filled in by the user on the register.php registration page is submitted To regOK.php:
/* regOK.php */
if ($FirstName and $LastName and $email) {
…//Query the database to see if the user exists
}
}else{
…//Error handling
}
The above program flow is as follows:
First check whether all the information is filled in as required, if not, return and re-enter
If all the information is filled in, first, we retrieve the user login details from the database
mysql_connect() or die ("Error connecting to database!");
$query="select * from info where FirstName='$FirstName' and LastName='$LastName' and email='$email'";
$result = mysql_db_query(" users", $query);
$info=mysql_fetch_array($result);
$count=$info["count"];
Check if the database has such a user, if so, it specifies the old information and uses the current one Information creates a new cookie. If the same user does not have a database login, create a new database login and create a new cookie.
Now use the isset() function to check whether the user has a counter. If so, the counter will be increased and a new cookie will be created:
$count++; //Increase the counter
$CookieString=$FirstName.'&'.$LastName.'&' .$email.'&'.$count;
SetCookie ("myCookies",$CookieString, time()+3600);
If there is no user counter, add a record in mysql and set a cookie
Note: Call There should be no data output to the browser before the setcookie function, otherwise an error will occur.
How to implement cross-domain cookies?
According to the cookie specification, a cookie can only be used for one domain name. Therefore, if a cookie is set for a domain name in the browser, the cookie will be invalid for other domain names.
Let’s talk about a cross-domain cookie implementation plan:
Step 1: Create a preset script
Add the following code to the preset script (or appear in the function before all scripts).
<?php
/*If the GET variable has been set and it is different from the cookie variable
*Use the get variable (update cookie)
*/
global $HTTP_COOKIE_VARS, $HTTP_GET_VARS;
if (isset($s sessionid) && isset($HTTP_GET_VARS['sessionid']) && ($HTTP_COOKIE_VARS['sessionid'] != $HTTP_GET_VARS['sessionid'])) {
SetCookie('sessionid', $HTTP_GET_VARS['sessionid'], 0, '/ ', '');
$HTTP_COOKIE_VARS['sessionid'] = $HTTP_GET_VARS['sessionid'];
After this code is run, a global variable' sessionid' will be available for scripts. It will save the sessionid value in the user's cookie, or the sessionid value sent through a GET request.
Step 2: Use variables for all cross-domain name references
Create a global configuration file to store the basic reference form of domain names that can be switched. For example, if we have domain1.com and domain2.com, the following settings:
<?php
$domains['domain1'] = "http://www.domain1.com/-$sessionid-";
$domains ['domain2'] = "http://www.domain2.com/-$sessionid-"; We write this code: ['domain2'], "/contact/?email=yes">here to contact us.";
?>
The above code will produce the following output:
Click <a href="http:/ /www.domain2.com/-66543afe6543asdf6asd-/contact/?email=yes">here</a> to contact us.
Here the sessionid has been inserted into the URL.
Step 3: Configure Apache
Now, let’s configure Apache to rewrite this URL.
We need to change
http://www.domain2.com/-66543afe6543asdf6asd-/contact/
into this:
http://www.domain2.com/contact/?sessi
And this url:
http: //www.domain2.com/-66543afe6543asdf6asd-/contact/?email=yes
It becomes like this:
http://www.domain2.com/contact/?email=yes&sessi
In order to achieve the above requirements, simply configure Two virtual servers, as domain1 and domain2, operate as follows:
<VirtualHost ipaddress>
DocumentRoot /usr/local/www/domain1
ServerName www.domain1.com
RewriteEngine
RewriteRule ^/- (.*)-(. * .
ServerName www. domain2.com
RewriteEngine on
RewriteRule ^/-(.*)-(.*?.*)$ $2&sessi
RewriteRule ^/-(.*)-(.*)$ $2?sessi
</VirtualHost>
These rewriting rules implement the above two URL rewriting requirements.
The above has introduced the guide for using cookies in PHP, including whether cookies can be deleted. I hope it will be helpful to friends who are interested in PHP tutorials.