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中文汉字验证码
Apr 08 PHP
PHP 创建标签云函数代码
May 26 PHP
PHP 数组遍历方法大全(foreach,list,each)
Jun 30 PHP
用PHP实现Ftp用户的在线管理
Feb 16 PHP
PHP 文件编程综合案例-文件上传的实现
Jul 03 PHP
理解PHP中的stdClass类
Apr 18 PHP
浅谈PHP调用Webservice思路及源码分享
Jun 04 PHP
PHP使用正则表达式获取微博中的话题和对象名
Jul 18 PHP
PHP面向对象之工作单元(实例讲解)
Jun 26 PHP
PHP环形链表实现方法示例
Sep 15 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
May 28 PHP
php微信开发之谷歌测距
Jun 14 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
thinkphp实现图片上传功能分享
2014/03/04 PHP
php获取指定范围内最接近数的方法
2015/06/02 PHP
php pdo操作数据库示例
2017/03/10 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
CSS3画一个阴阳八卦图
2021/03/09 HTML / CSS
JavaScript 参数中的数组展开 [译]
2012/09/21 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
2016/07/28 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
2017/03/30 Javascript
Vue组件开发之LeanCloud带图形校验码的短信发送功能
2017/11/07 Javascript
浅谈vue 锚点指令v-anchor的使用
2019/11/13 Javascript
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Python中的面向对象编程详解(下)
2015/04/13 Python
python实现web方式logview的方法
2015/08/10 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
如何在python中使用selenium的示例
2017/12/26 Python
python如何使用unittest测试接口
2018/04/04 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
Django Rest framework解析器和渲染器详解
2019/07/25 Python
通过Python pyecharts输出保存图片代码实例
2020/11/25 Python
html5唤醒APP小记
2019/03/27 HTML / CSS
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
VICHY薇姿美国官方网站:欧洲药房第一的抗衰老品牌
2017/11/22 全球购物
意大利在线药房:Saninforma
2021/02/11 全球购物
小学教师培训感言
2014/02/11 职场文书
网络管理员岗位职责
2014/03/17 职场文书
学生请假条格式
2014/04/11 职场文书
2014年就业工作总结
2014/11/26 职场文书
精神文明建设先进个人事迹材料
2014/12/24 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书
详解MySQL主从复制及读写分离
2021/05/07 MySQL