Home  >  Article  >  Backend Development  >  Sharing study notes on how to use php cookies_PHP tutorial

Sharing study notes on how to use php cookies_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:25:27719browse

PHP setcookie() function sends an HTTP cookie to the client. A cookie is a variable sent to the browser by the server. Cookies are typically small text files that a server embeds on a user's computer. This cookie is sent each time the computer requests a page through the browser. The name of the cookie is specified as a variable of the same name. For example, if the cookie being sent is named "name", a variable named $user is automatically created containing the cookie's value.

The cookie must be assigned before any other output is sent. The function returns true if successful, false otherwise.

1 setcookie(name, value, expire, path, domain, secure)
•name required. Specifies the name of the cookie.
•value required. Specifies the value of the cookie.
•expire Optional. Specifies the validity period of the cookie.
•path optional. Specifies the server path for cookies.
•domain optional. Specifies the domain name for the cookie.
•secure Optional. Specifies whether cookies are transmitted over a secure HTTPS connection.
The value of the cookie named "user" can be accessed via $HTTP_COOKIE_VARS["user"] or $_COOKIE["user"]. When sending a cookie, the cookie value is automatically URL-encoded. URL decoding is done on reception. If you don't need this, you can use setrawcookie() instead.

Example, php setting and getting cookies

Copy code The code is as follows:

setcookie('mycookie','value');

//Function prototype: int setcookie(string name,string value,int expire,string path,string domain,int secure)
echo($mycookie);
echo($HTTP_COOKIE_VARS['mycookie'] );
echo($_COOKIE['mycookie']);

Delete Cookies

(1) Call setcookie() with only name parameter;
(2) Set the expiration time to time() or time-1;

Copy code The code is as follows:


setcookie ('mycookie'); or setcookie('mycookie',''); or setcookie("mycookie",false);
//setcookie('mycookie','',time()-3600);
echo($HTTP_COOKIE_VARS['mycookie']);
print_r($_COOKIE);

Suggested deletion method:

Copy code The code is as follows:

setcookie('mycookie','',time()-3600);

PHP provides a very useful function mktime().
You just need to pass to mktime() the hours, minutes, seconds, months, dates, and years you want to represent in order.
mktime() will return the total number of days since January 1, 1970. Number of seconds.
So if you need to simulate the Y2K problem:

Copy code The code is as follows:

$y2k = mktime(0,0,0,1,1,2000);
setcookie('name','value',$y2k);
setcookie('name', 'value', time+3600);
setcookie('name', 'value', $y2k , '~/myhome', '.domain.com');

How to get COOKIE expiration time

Copy code The code is as follows:

$expire = time() + 86400; // Set the validity period of 24 hours
setcookie ("var_name", "var_value", $expire); // Set a cookie named var_name and set the validity period
setcookie ("var_name_expire", $expire, $expire); // Then expire Set the time into the cookie so you can know the expiration time of var_name

Note:

When sending a cookie, the cookie value is automatically URL-encoded. URL decoding is done on reception.
If you don’t need this, you can use setrawcookie() instead.


For example, cookie to save user login information


1. Database connection configuration page: connectvars.php

Copy code The code is as follows:

//The location of the database
define(' DB_HOST', 'localhost');
//Username
define('DB_USER', 'root');
//Password
define('DB_PASSWORD', '19900101');
//Database name
define('DB_NAME','test') ;
?>

2. Login page: logIn.php

Copy code The code is as follows:

//插入连接数据库的相关信息
require_once 'connectvars.php';

$error_msg = "";
//判断用户是否已经设置cookie,如果未设置$_COOKIE['user_id']时,执行以下代码
if(!isset($_COOKIE['user_id'])){
if(isset($_POST['submit'])){//判断用户是否提交登录表单,如果是则执行如下代码
$dbc = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
$user_username = mysqli_real_escape_string($dbc,trim($_POST['username']));
$user_password = mysqli_real_escape_string($dbc,trim($_POST['password']));

if(!empty($user_username)&&!empty($user_password)){
//MySql中的SHA()函数用于对字符串进行单向加密
$query = "SELECT user_id, username FROM mismatch_user WHERE username = '$user_username' AND "."password = SHA('$user_password')";
//用用户名和密码进行查询
$data = mysqli_query($dbc,$query);
//若查到的记录正好为一条,则设置COOKIE,同时进行页面重定向
if(mysqli_num_rows($data)==1){
$row = mysqli_fetch_array($data);
setcookie('user_id',$row['user_id']);
setcookie('username',$row['username']);
$home_url = 'loged.php';
header('Location: '.$home_url);
}else{//若查到的记录不对,则设置错误信息
$error_msg = 'Sorry, you must enter a valid username and password to log in.';
}
}else{
$error_msg = 'Sorry, you must enter a valid username and password to log in.';
}
}
}else{//如果用户已经登录,则直接跳转到已经登录页面
$home_url = 'loged.php';
header('Location: '.$home_url);
}
?>

   
        Mismatch - Log In
       
   
   
       

Msimatch - Log In


       
        if(empty($_COOKIE['user_id'])){
echo '

'.$error_msg.'

';
        ?>
       
       

           

                Log In

               
               
                                value="" />
               

               
               
           

   
           

           
       

                }
        ?>
   

3、登入页面:loged.php

复制代码 代码如下:

//已登录页面,显示登录用户名
if(isset($_COOKIE['username'])){
    echo 'You are Logged as '.$_COOKIE['username'].'
';
    //点击“Log Out”,则转到logOut.php页面进行cookie的注销
    echo ' Log Out('.$_COOKIE['username'].')';
}
/**In the logged-in page, you can use the user's cookies such as $_COOKIE['username'],
* $_COOKIE['user_id'] to query the database, and you can do many things.*/
?>

4、注销cookie页面:logOut.php(注销后重定向到lonIn.php)

复制代码 代码如下:

/**cookies logout page*/
if(isset($_COOKIE['user_id'])){
    //将各个cookie的到期时间设为过去的某个时间,使它们由系统删除,时间以秒为单位
    setcookie('user_id','',time()-3600);
    setcookie('username','',time()-3600);
}
//location首部使浏览器重定向到另一个页面
$home_url = 'logIn.php';
header('Location:'.$home_url);
?>

最后总结三点,大家必须留意

1: 设置cookie时的注意事项

在同一个页面中设置cookie,实际上是按从后往前的顺序进行的.如果要先删除一个cookie,再写入一个cookie,则必须先写写入语句,再写删除语句.否则会出现错误.

2: setcookie举例

简单的: setcookie("mycookie","value_of_mycookie");
带失效时间的: setcookie("withExpire","Expire_in_1_hour",time()+3600);
什么都有的:setcookie("FullCookie","Full_cookie_value",time+3600,"/forum","www.jb51.net",1);

3: cookie的一些特点

cookie是面向路径的.缺省path属性时,WEB服务器页会自动传递当前路径给浏览器.指定路径会强制服务器使用设置的路径.
在一个目录页面里设的cookie在另一个目录的页面里是看不到的.

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/825079.htmlTechArticlePHP setcookie() 函数向客户端发送一个 HTTP cookie。cookie 是由服务器发送到浏览器的变量。cookie 通常是服务器嵌入到用户计算机中的小文本文件...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn