110 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			110 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								title: PHP Cookies
							 | 
						|||
| 
								 | 
							
								localeTitle: PHP Cookies
							 | 
						|||
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								# PHP COOKIES
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 什么是Cookie?
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Cookie通常用于标识用户。它是服务器嵌入用户计算机的小文件。 每次同一台计算机通过浏览器请求页面时,它也会发送cookie。  
							 | 
						|||
| 
								 | 
							
								Cookie旨在成为记住有状态信息或记录用户浏览活动的可靠机制。  
							 | 
						|||
| 
								 | 
							
								它们还可用于记住用户先前在表单字段(如姓名,地址,密码等)中输入的任意信息。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 使用PHP创建Cookie
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								使用PHP,您可以创建和检索cookie值。 使用setcookie()函数创建cookie。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								`setcookie(name, value, expire, path, domain, secure, httponly);`
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								只有_name_参数是必需参数。所有其他参数都是可选的。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## PHP创建/检索Cookie
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								以下示例创建名为“user”的cookie,其值为“John Doe”。  
							 | 
						|||
| 
								 | 
							
								Cookie将在30天后(86400 \* 30)过期。  
							 | 
						|||
| 
								 | 
							
								“/”表示cookie在整个网站中可用(否则,您可以选择您喜欢的目录)。  
							 | 
						|||
| 
								 | 
							
								然后我们检索cookie“user”的值(使用全局变量$ \_COOKIE)。  
							 | 
						|||
| 
								 | 
							
								我们还使用isset()函数来确定cookie是否已设置:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								**例:**
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								<?php 
							 | 
						|||
| 
								 | 
							
								 $cookie_name = "user"; 
							 | 
						|||
| 
								 | 
							
								 $cookie_value = "John Doe"; 
							 | 
						|||
| 
								 | 
							
								 setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");  // 86400 = 1 day 
							 | 
						|||
| 
								 | 
							
								 ?> 
							 | 
						|||
| 
								 | 
							
								 <html> 
							 | 
						|||
| 
								 | 
							
								 <body> 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 <?php 
							 | 
						|||
| 
								 | 
							
								 if(!isset($_COOKIE[$cookie_name])) { 
							 | 
						|||
| 
								 | 
							
								    echo "Cookie named '" . $cookie_name . "' is not set!"; 
							 | 
						|||
| 
								 | 
							
								 } else { 
							 | 
						|||
| 
								 | 
							
								    echo "Cookie '" . $cookie_name . "' is set!<br>"; 
							 | 
						|||
| 
								 | 
							
								    echo "Value is: " . $_COOKIE[$cookie_name]; 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								 ?> 
							 | 
						|||
| 
								 | 
							
								 </body> 
							 | 
						|||
| 
								 | 
							
								 </html> 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								**注意:** setcookie()函数必须出现**在。之前** 标签。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								输出:  
							 | 
						|||
| 
								 | 
							
								Cookie'用户'已设置!  
							 | 
						|||
| 
								 | 
							
								价值是:John Doe
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## PHP修改Cookie值
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								要修改cookie,只需使用setcookie()函数再次设置该值:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								**例:**
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								<?php 
							 | 
						|||
| 
								 | 
							
								 $cookie_name = "user"; 
							 | 
						|||
| 
								 | 
							
								 $cookie_value = "Jane Porter"; 
							 | 
						|||
| 
								 | 
							
								 setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); 
							 | 
						|||
| 
								 | 
							
								 ?> 
							 | 
						|||
| 
								 | 
							
								 <html> 
							 | 
						|||
| 
								 | 
							
								 <body> 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 <?php 
							 | 
						|||
| 
								 | 
							
								 if(!isset($_COOKIE[$cookie_name])) { 
							 | 
						|||
| 
								 | 
							
								    echo "Cookie named '" . $cookie_name . "' is not set!"; 
							 | 
						|||
| 
								 | 
							
								 } else { 
							 | 
						|||
| 
								 | 
							
								    echo "Cookie '" . $cookie_name . "' is set!<br>"; 
							 | 
						|||
| 
								 | 
							
								    echo "Value is: " . $_COOKIE[$cookie_name]; 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								 ?> 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 </body> 
							 | 
						|||
| 
								 | 
							
								 </html> 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								输出:  
							 | 
						|||
| 
								 | 
							
								Cookie'用户'已设置!  
							 | 
						|||
| 
								 | 
							
								价值观是:Alex Porter
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## PHP删除Cookie
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								要删除cookie,请使用过去有过期日期的setcookie()函数:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								**例:**
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								<?php 
							 | 
						|||
| 
								 | 
							
								 // set the expiration date to one hour ago 
							 | 
						|||
| 
								 | 
							
								 setcookie("user", "", time() - 3600); 
							 | 
						|||
| 
								 | 
							
								 ?> 
							 | 
						|||
| 
								 | 
							
								 <html> 
							 | 
						|||
| 
								 | 
							
								 <body> 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 <?php 
							 | 
						|||
| 
								 | 
							
								 echo "Cookie 'user' is deleted."; 
							 | 
						|||
| 
								 | 
							
								 ?> 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 </body> 
							 | 
						|||
| 
								 | 
							
								 </html> 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								输出:  
							 | 
						|||
| 
								 | 
							
								Cookie'用户'已删除。
							 |