一.在分析session和cookie的基本用法之前,先了解一下两者之间的比较:
- session:存储用户访问的全局唯一变量,存储在服务器上的php指定的目录(session_dir)[个人主机则存储在php/tmp文件夹中]进行存放;
- cookie用来存储连续访问一个页面时所使用,存储在客户端,对于cookie是存储在用户WIN/temp下;
- session和cookie都可以通过时间设置过期时间,不同的是session过期时间是通过cookie进行设置的(setcookie()函数);
- session信息可以通过cookie方式进行存储(即将session信息存储到客户端,多用于游客状态下添加购物车),默认采用sessionID的命名方式进行存储.
二.session的简单使用
1 <?php
2 //建立session.php文件进行session处理
3 //开启会话 ,存储数据
4 session_start();
5 $_SESSION['user']='zhangsan';
6 ?>
1 <?php
2 //前台showsession.php文件session输出
3 session_start();
4 var_dump($_SESSION['user']);
5 unset($_SESSION['user']);//销毁会话之前手动释放session,即先释放后销毁
6 session_destroy(); //销毁会话
先执行session.php文件存储一个session信息,然后执行showsession.php,如果想要设置session一个过期时间,需要在session.php文件添加一行代码:
setcookie(session_name(),session_id(),time()+3600); //设置过期时间为一个小时
PS:session本质是存储信息到服务器中,每次使用都需要先session_start()开启session回话,如果要删除session,第一步是释放->unset(),第二步才是销毁->session_destroy().另外使用session可以防止表单重复验证.
三.cookie的简单使用
cookie常用于识别用户,是一种服务器留在用户计算机(客户端)上的包含信息的小文件,cookie只有一个函数->setcookie()
1 <?
2 //setcookie(name, value, expire, path, domain);
3 //key:user;value:zhansan;过期时间:10秒
4 setcookie('user','zhangsan', time()+10);
5
6 //打印输出
7 var_dump($_COOKIE);
8 ?>
最后,给大家一个使用cookie实现的小功能,不经过数据库直接进行判断登录的代码:
1 <?php
2 //登录逻辑
3 if(isset($_POST['user'])){
4 $user=$_POST['user'];
5 $pwd=$_POST['pwd'];
6 if($user!=NULL&&$pwd!=NULL){
7 //登陆成功
8 $loginCode = md5($user.$pwd);
9 setcookie('loginCode',$loginCode, time()+100);//证明已经登录
10 setcookie('user',$user, time()+100);//自动登录实时显示用户名称
11 echo '欢迎'.$user.'登陆成功';exit;
12 } else {
13 //用户名和密码不能为空
14 echo '用户和密码不能为空';
15 exit;
16 }
17 }
18 //自动登录判断 : 通过设置过期时间进行判断
19 if(isset($_COOKIE['loginCode'])){
20 echo '欢迎'.$_COOKIE['user'].'自动登陆成功';
21 exit();
22 }
23 ?>
24 <html>
25 <head>
26 <meta charset="UTF-8">
27 <title>Document</title>
28 </head>
29 <body>
30 <form action="login.php" method="post">
31 用户名:
32 <input type="text" name="user">
33 密码:
34 <input type="password" name="pwd">
35 <input type="submit" value="登录">
36 </form>
37 </body>
38 </html>
本次cookie和session相关信息的学习就到这儿了~回见,大家@loveless1210
用最好的语言,编织最美的世界