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实现快速排序法函数代码
Aug 27 PHP
PHP编码转换函数 自动转换字符集支持数组转换
Dec 16 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
Jan 12 PHP
php生成短网址示例
May 05 PHP
PHP获取某个月最大天数(最后一天)的方法
Jul 29 PHP
PHP中常见的缓存技术实例分析
Sep 23 PHP
PHP使用内置函数生成图片的方法详解
May 09 PHP
在PHP语言中使用JSON和将json还原成数组的方法
Jul 19 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
php中10个不同等级压缩优化图片操作示例
Nov 14 PHP
Laravel学习教程之request validation的编写
Oct 25 PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 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实现获取客户端IP并获取IP信息
2015/03/17 PHP
ThinkPHP中调用PHPExcel的实现代码
2017/04/08 PHP
PDO::errorInfo讲解
2019/01/28 PHP
什么是PHP7中的孤儿进程与僵尸进程
2019/04/14 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
JS延迟加载加快页面打开速度示例代码
2013/12/30 Javascript
SeaJS入门教程系列之使用SeaJS(二)
2014/03/03 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
2014/11/08 Javascript
JS实现3D图片旋转展示效果代码
2015/09/22 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
Moment.js实现多个同时倒计时
2019/08/26 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
使用Python脚本将文字转换为图片的实例分享
2015/08/29 Python
Python星号*与**用法分析
2018/02/02 Python
Python针对给定列表中元素进行翻转操作的方法分析
2018/04/27 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
2020/05/18 Python
Python中的整除和取模实例
2020/06/03 Python
介绍一下游标
2012/01/10 面试题
办公室文秘自我评价
2013/09/21 职场文书
工程力学硕士生的自我评价范文
2013/11/16 职场文书
2014年小学教师工作总结
2014/11/10 职场文书
拉贝日记观后感
2015/06/05 职场文书
高三物理教学反思
2016/02/20 职场文书
决心书格式及范文
2019/06/24 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP