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面向对象全攻略 (三)特殊的引用“$this”的使用
Sep 30 PHP
PHP学习之字符串比较和查找
Apr 17 PHP
解析php中static,const与define的使用区别
Jun 18 PHP
国外十大最流行的PHP框架排名
Jul 04 PHP
PHP函数extension_loaded()用法实例
Jan 19 PHP
PHP strtotime函数用法、实现原理和源码分析
Feb 04 PHP
PHP安装memcached扩展笔记
May 28 PHP
php好代码风格的阶段性总结
Jun 25 PHP
PHP仿微信发红包领红包效果
Oct 30 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 PHP
Docker搭建自己的PHP开发环境
Feb 24 PHP
PHP 应用容器化以及部署方法
Feb 12 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
Protoss兵种介绍
2020/03/14 星际争霸
php简单封装了一些常用JS操作
2007/02/25 PHP
关于php mvc开发模式的感想
2011/06/28 PHP
php函数间的参数传递(值传递/引用传递)
2013/09/23 PHP
Yii实现多按钮保存与提交的方法
2014/12/03 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
基于Jquery制作的幻灯片图集效果打包下载
2011/02/12 Javascript
css如何让浮动元素水平居中
2015/08/07 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
2015/08/13 Javascript
基于VUE选择上传图片并页面显示(图片可删除)
2017/05/25 Javascript
详解升级react-router 4 踩坑指南
2017/08/14 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
浅析vue给不同环境配置不同打包命令
2018/08/17 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
2019/09/06 Javascript
JS前端广告拦截实现原理解析
2020/02/17 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
echarts饼图各个板块之间的空隙如何实现
2020/12/01 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
python实现文件名批量替换和内容替换
2014/03/20 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
Python入门基础之数字字符串与列表
2021/02/01 Python
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
RetroStage德国:复古服装
2019/02/03 全球购物
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
土木工程实习生自我鉴定
2013/09/19 职场文书
8和9的加减法教学反思
2014/05/01 职场文书
英语自我介绍演讲稿
2014/09/01 职场文书
百日宴上的祝酒词
2015/08/10 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers