Blogger Information
Blog 33
fans 0
comment 0
visits 49781
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP Cookie与Session
Lon
Original
887 people have browsed it

一、Cookie

1、Cookie是什么?

cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。

2、如何创建 Cookie?

setcookie() 函数用于设置 cookie。

注释:setcookie() 函数必须位于 <html> 标签之前。

语法

  1. setcookie(name, value [, expire, path, domain]);

参数

  1. //name,cookie的名称;
  2. //value,cookie的值,会自动进行 URL 编码。接收时会进行 URL 解码。COOKIE值的类型只能是标量数据类型,不可是数组、对象、资源。
  3. //expire,cookie的有效期;
  4. //path,cookie的服务器路径;
  5. //domain,cookie的域名;

实例

  1. <?php
  2. // 设置过期时间,过期时间:时间戳 + 要存放的时间秒
  3. setcookie('name','张三', time() + 3600);
  4. // 添加COOKIE数据,存字符串
  5. setcookie("username","admin",time() + 7*24*3600);
  6. setcookie("password","123456",time() + 7*24*3600);
  7. // 添加COOKIE数据,存数组
  8. setcookie('user[id]',10 );
  9. setcookie('user[name]','李四' );
  10. setcookie('user[email]','lisi@163.com' );

3、如何取回 Cookie 的值?

PHP 的 $_COOKIE 变量用于取回 cookie 的值。

  1. <?php
  2. // 输出 cookie 值
  3. echo $_COOKIE["user"];
  4. // 查看所有 cookie
  5. print_r($_COOKIE);

4、如何删除 Cookie?

当删除 cookie 时,您应当使过期日期变更为过去的时间点。

  1. <?php
  2. //unset($_COOKIE['user']);
  3. // 删除COOKIE数据:设置有效期为过去的某一个时间
  4. // setcookie("username","admin",time()-1);
  5. // setcookie("password","123456",time()-10);
  6. // 或者
  7. // 删除COOKIE:设置COOKIE的值为false或空字符
  8. setcookie("username",false);
  9. setcookie("password","");

二、Session

PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。

1、开始 PHP Session

在把用户信息存储到 PHP session 中之前,首先必须启动会话。

注释:session_start() 函数必须位于 <html> 标签之前:

实例

  1. <?php session_start(); ?>
  2. <html>
  3. <body>
  4. </body>
  5. </html>

2、存储 Session 变量

存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量

  1. <?php
  2. //开启SESSION会话
  3. session_start();
  4. // 存储 session 数据
  5. $_SESSION['userid']=10;
  6. $_SESSION['username']='admin';
  7. // 读取SESSION数据
  8. echo "用户ID:".$_SESSION['userid']."<br>";
  9. echo "用户名:".$_SESSION['username']."<br>";
  10. //打印$_SESSION数组
  11. print_r($_SESSION);

3、销毁 Session

如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。

unset() 函数用于释放指定的 session 变量:

  1. <?php
  2. //开启SESSION会话
  3. session_start();
  4. // 存储 session 数据
  5. $_SESSION['userid']=10;
  6. $_SESSION['username']='admin';
  7. // 读取SESSION数据
  8. echo "用户ID:".$_SESSION['userid']."<br>";
  9. echo "用户名:".$_SESSION['username']."<br>";
  10. unset($_SESSION['userid']);
  11. //session_unset(); // 文件会留下来,服务器会保存之前的session生成的文件
  12. //session_destroy(); // 服务器上的文件也删除
  13. //打印$_SESSION数组
  14. print_r($_SESSION);

4、登录实例

  1. <?php
  2. // 表单提交后,接收前台表单传过来的数据
  3. $data = $_POST;
  4. // 清除一些空白符号
  5. foreach ($data as $key => $value) {
  6. $data[$key] = trim($value);
  7. }
  8. //变量赋值
  9. $username = $data["username"];
  10. //密码MD5()加密
  11. $password = md5($data["password"]);
  12. //PDO连接mysql
  13. try{
  14. $pdo = new PDO('mysql:host=localhost;dbname=lianxi','root','1qazxsw2');
  15. }catch(PDOException $e){
  16. //抛出错误
  17. echo '数据库连接失败' . $e->getMessage();
  18. }
  19. //拼接sql语句
  20. $sql = "SELECT * FROM `tp_user` WHERE `password` = :password AND `username` = :username";
  21. //预处理sql语句
  22. $pre = $pdo -> prepare($sql);
  23. //参数绑定
  24. $pre -> bindParam('username',$username,PDO::PARAM_STR);
  25. $pre -> bindParam('password',$password,PDO::PARAM_STR);
  26. //执行sql语句
  27. $exe = $pre -> execute();
  28. //返回结果集
  29. $userInfo = $pre -> fetch();
  30. //判断用户信息是否存在
  31. if (!empty($userInfo)) {
  32. // 当验证通过后,启动 Session
  33. session_start();
  34. // 注册登陆成功的 admin 变量,并赋值
  35. $_SESSION["admin"]['userid'] = $userInfo['id'];
  36. $_SESSION["admin"]['username'] = $userInfo['username'];
  37. } else {
  38. die("用户名或密码错误~");
  39. }

三、COOKIE和SESSION的区别

(1)存储位置:Cookie存储在客户端浏览器中,相对不安全;Session内容所在文件存储在服务器中,一般在根目录下的tmp文件夹中,相对更安全。

(2)数量和大小限制:Cookie存储的数据在不同的浏览器会有不同的限制,一般在同一个域名下,Cookie变量数量控制在20个以内,每个cookie值的大小控制在4kb以内。session值没有大小和数量限制,但如果数量过多,会增大服务器的压力。

(3)内容区别:cookie保存的内容是字符串,而服务器中的session保存的数据是对象。

(4)路径区别:session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到;而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post