PHP cookie,session的使用与用户自动登录功能实现方法分析


Posted in PHP onJune 05, 2019

本文实例讲述了PHP cookie,session的使用与用户自动登录功能实现方法。分享给大家供大家参考,具体如下:

cookie的使用

//生成cookie
//注释:setcookie() 函数必须位于 <html> 标签之前。
//setcookie(name, value, expire, path, domain);  //名称,值,过期时间,有效路径,有效域名
//path,可选;如果路径设置为 "/",那么 cookie 将在整个域名内有效.如果路径设置为 "/test/",那么 cookie 将在 test 目录下及其所有子目录下有效。默认的路径值是 cookie 所处的当前目录。
//domain,可选;为了让 cookie 在 example.com 的所有子域名中有效,您需要把 cookie 的域名设置为 ".example.com"。当您把 cookie 的域名设置为 www.example.com 时,cookie 仅在 www 子域名中有效。默认当前域名。
setcookie("user", "Alex Porter", time()+3600);
setcookie("userid", "1000569852", time()+3600);
//获取
var_dump($_COOKIE);
// isset() 函数来确认是否已设置了 cookie:
if (isset($_COOKIE["user"])){
 echo "Welcome " . $_COOKIE["user"] . "!<br />";
}
else{
 echo "Welcome guest!<br />";
}
//当删除 cookie 时,您应当使过期日期变更为过去的时间点。
setcookie("user", "", time()-3600);

session的使用

//session特定:可供应用程序中的所有页面使用;会话信息是临时的,在用户离开网站后将被删除。
// 虚拟主机用户。 设置一个存放目录,需要可读写权限
$savePath = getcwd().'/session_save_dir/';
//echo $savePath;
session_save_path($savePath);//session_start 开启前。
session_id('phpjianlong'); // session_start() 函数之前调用 session_id();命名方式同变量
session_start();
//存储和取值
$_SESSION['views']=123456789;
$_SESSION['name']='php建龙';
$_SESSION['array']=array('a','b','c','d');
echo "Pageviews=". $_SESSION['views'];
var_dump($_SESSION);
//判断是否存在
if(isset($_SESSION['views'])){
 $_SESSION['views']=$_SESSION['views']+1;
}
else{
 $_SESSION['views']=1;  //不存在赋值
}
echo "Views=". $_SESSION['views'];
//session的删除
unset($_SESSION['name']);
var_dump($_SESSION);
//注释:session_destroy() 将重置 session,您将失去所有已存储的 session 数据。
session_destroy();  //不带参数
session_start();  //再次开启session是,重新初始化$_SESSION数组;
var_dump($_SESSION);
//获取/设置 当前会话 ID。;浏览器会自动生成名为PHPSESSID的cookie
echo session_id();
session_id('phpjianlong'); // session_start() 函数之前调用 session_id();命名方式同变量

session和cookie的区别:

1、session在服务器,cookie存储在浏览器
2、session可以存储数组,cookie value只能是字符串
3、session不能设置有效期,cookie可以设置有效期
4、session基于cookie判断用户信息,禁用cookie,session受影响不能用。还可以手动通过URL传值、隐藏表单传递Session ID。用文件、数据库等形式保存Session ID,

URL 形如:http://www.openphp.cn/index.php?PHPSESSID= bba5b2a240a77e5b44cfa01d49cf9669

用户自动登录的实现

//方法1: Cookie,在 Cookie 中保存用户名和密码(可能是 md5 加密后字符串),并在每次请求页面的时候进行验证。如果用户名和密码存储在数据库,每次都要执行一次数据库查询,给数据库造成多余的负担。因为客户端 Cookie 中的信息是可能被用户查看和修改。不安全舍弃此方法。
//方法2:session,用cookie长期保存session id;
//系统临时文件夹找到这个 Session 文件,一般文件名形如:sess_4c83638b3b0dbf65583181c2f89168ec,后面是 32 位编码后的随机字符串。用编辑器打开它,看一下它的内容:
//变量名|类型:长度:值;
//设置 Session 的生存期:
session_start();
// 保存5天
$lifeTime = 5 * 24 * 3600;
setcookie(session_name(), session_id(), time() + $lifeTime, "/");
//之后此浏览器在此输入对应网址,服务器获取cookie保存的sessionid;根据sessionid的内容判断,实现自动登录。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php join函数应用
May 04 PHP
JS中encodeURIComponent函数用php解码的代码
Mar 01 PHP
mysql,mysqli,PDO的各自不同介绍
Sep 19 PHP
php中return的用法实例分析
Feb 28 PHP
PHP的PDO常用类库实例分析
Apr 07 PHP
PHP使用反射机制实现查找类和方法的所在位置
Apr 22 PHP
图文详解PHP环境搭建教程
Jul 16 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
Apr 18 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
PHP实现链表的定义与反转功能示例
Jun 09 PHP
PHP下用Swoole实现Actor并发模型的方法
Jun 12 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
Oct 17 PHP
PHP实现获取url地址中顶级域名的方法示例
Jun 05 #PHP
PHP token验证生成原理实例分析
Jun 05 #PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
Jun 05 #PHP
PHP 数组黑名单/白名单实例代码详解
Jun 04 #PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
Jun 03 #PHP
PHP使用CURL实现下载文件功能示例
Jun 03 #PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
Jun 03 #PHP
You might like
php 页面执行时间计算代码
2008/12/04 PHP
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
PHP让数组中有相同值的组成新的数组实例
2017/12/31 PHP
Prototype String对象 学习
2009/07/19 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
2013/01/24 Javascript
JS写的贪吃蛇游戏(个人练习)
2013/07/08 Javascript
js获取通过ajax返回的map型的JSONArray的方法
2014/01/09 Javascript
js post提交调用方法
2014/02/12 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
详解javascript传统方法实现异步校验
2016/01/22 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
2017/05/05 jQuery
js自定义弹框插件的封装
2020/08/24 Javascript
基于Vue实例对象的数据选项
2017/08/09 Javascript
JS实现合并json对象的方法
2017/10/10 Javascript
Three.js基础学习教程
2017/11/16 Javascript
Nginx 配置多站点vhost 的方法
2018/01/07 Javascript
vue项目中使用tinymce编辑器的步骤详解
2018/09/11 Javascript
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
一些手写JavaScript常用的函数汇总
2019/04/16 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
Python实现批量转换文件编码的方法
2015/07/28 Python
Python的时间模块datetime详解
2017/04/17 Python
pandas带有重复索引操作方法
2018/06/08 Python
10款最好的Python开发编辑器
2019/07/03 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
Python识别验证码的实现示例
2020/09/30 Python
Django配置跨域并开发测试接口
2020/11/04 Python
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
Linux如何修改文件和文件夹的权限
2013/09/05 面试题
人力资源管理专业自荐书
2014/07/07 职场文书
校友会致辞
2015/07/30 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript