一、Cookie
1、Cookie是什么?
cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。
2、如何创建 Cookie?
setcookie() 函数用于设置 cookie。
注释:setcookie() 函数必须位于 <html> 标签之前。
语法
setcookie(name, value [, expire, path, domain]);
参数
//name,cookie的名称;//value,cookie的值,会自动进行 URL 编码。接收时会进行 URL 解码。COOKIE值的类型只能是标量数据类型,不可是数组、对象、资源。//expire,cookie的有效期;//path,cookie的服务器路径;//domain,cookie的域名;
实例
<?php// 设置过期时间,过期时间:时间戳 + 要存放的时间秒setcookie('name','张三', time() + 3600);// 添加COOKIE数据,存字符串setcookie("username","admin",time() + 7*24*3600);setcookie("password","123456",time() + 7*24*3600);// 添加COOKIE数据,存数组setcookie('user[id]',10 );setcookie('user[name]','李四' );setcookie('user[email]','lisi@163.com' );
3、如何取回 Cookie 的值?
PHP 的 $_COOKIE 变量用于取回 cookie 的值。
<?php// 输出 cookie 值echo $_COOKIE["user"];// 查看所有 cookieprint_r($_COOKIE);
4、如何删除 Cookie?
当删除 cookie 时,您应当使过期日期变更为过去的时间点。
<?php//unset($_COOKIE['user']);// 删除COOKIE数据:设置有效期为过去的某一个时间// setcookie("username","admin",time()-1);// setcookie("password","123456",time()-10);// 或者// 删除COOKIE:设置COOKIE的值为false或空字符setcookie("username",false);setcookie("password","");
二、Session
PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。
1、开始 PHP Session
在把用户信息存储到 PHP session 中之前,首先必须启动会话。
注释:session_start() 函数必须位于 <html> 标签之前:
实例
<?php session_start(); ?><html><body></body></html>
2、存储 Session 变量
存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量
<?php//开启SESSION会话session_start();// 存储 session 数据$_SESSION['userid']=10;$_SESSION['username']='admin';// 读取SESSION数据echo "用户ID:".$_SESSION['userid']."<br>";echo "用户名:".$_SESSION['username']."<br>";//打印$_SESSION数组print_r($_SESSION);
3、销毁 Session
如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。
unset() 函数用于释放指定的 session 变量:
<?php//开启SESSION会话session_start();// 存储 session 数据$_SESSION['userid']=10;$_SESSION['username']='admin';// 读取SESSION数据echo "用户ID:".$_SESSION['userid']."<br>";echo "用户名:".$_SESSION['username']."<br>";unset($_SESSION['userid']);//session_unset(); // 文件会留下来,服务器会保存之前的session生成的文件//session_destroy(); // 服务器上的文件也删除//打印$_SESSION数组print_r($_SESSION);
4、登录实例
<?php// 表单提交后,接收前台表单传过来的数据$data = $_POST;// 清除一些空白符号foreach ($data as $key => $value) {$data[$key] = trim($value);}//变量赋值$username = $data["username"];//密码MD5()加密$password = md5($data["password"]);//PDO连接mysqltry{$pdo = new PDO('mysql:host=localhost;dbname=lianxi','root','1qazxsw2');}catch(PDOException $e){//抛出错误echo '数据库连接失败' . $e->getMessage();}//拼接sql语句$sql = "SELECT * FROM `tp_user` WHERE `password` = :password AND `username` = :username";//预处理sql语句$pre = $pdo -> prepare($sql);//参数绑定$pre -> bindParam('username',$username,PDO::PARAM_STR);$pre -> bindParam('password',$password,PDO::PARAM_STR);//执行sql语句$exe = $pre -> execute();//返回结果集$userInfo = $pre -> fetch();//判断用户信息是否存在if (!empty($userInfo)) {// 当验证通过后,启动 Sessionsession_start();// 注册登陆成功的 admin 变量,并赋值$_SESSION["admin"]['userid'] = $userInfo['id'];$_SESSION["admin"]['username'] = $userInfo['username'];} else {die("用户名或密码错误~");}
三、COOKIE和SESSION的区别
(1)存储位置:Cookie存储在客户端浏览器中,相对不安全;Session内容所在文件存储在服务器中,一般在根目录下的tmp文件夹中,相对更安全。
(2)数量和大小限制:Cookie存储的数据在不同的浏览器会有不同的限制,一般在同一个域名下,Cookie变量数量控制在20个以内,每个cookie值的大小控制在4kb以内。session值没有大小和数量限制,但如果数量过多,会增大服务器的压力。
(3)内容区别:cookie保存的内容是字符串,而服务器中的session保存的数据是对象。
(4)路径区别:session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到;而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号