首页 > 编程语言 >PHP中cookie,session的使用和用户自动登录的实现

PHP中cookie,session的使用和用户自动登录的实现

时间:2023-12-10 17:32:56浏览次数:37  
标签:session views echo SESSION cookie PHP id

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


用户自动登录的实现

//方法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的内容判断,实现自动登录。


标签:session,views,echo,SESSION,cookie,PHP,id
From: https://blog.51cto.com/ding/8762095

相关文章

  • 网安靶场环境_DVWA-读取文件报错File not found! Cookie中有两个security键
    DVWA-文件包含漏洞-读取文件报错-ERROR:Filenotfound!Cookie中有两个security键1问题复现(1)登录DVMA后,设置DVWASecurity为Low。 (2)进入FileInclusion,访问dvwa/vulnerabilities/fi目录下的的test.txt文件(自己创建的测试文件)。 (3)报错ERROR:Filenotfound!找不到文......
  • php实现廿八星宿定位
    七政四余排盘会涉及到二十八星宿定位问题,实现代码如下。privatefunctionLiangtianMa(){#region刻度$bi=360/365.24219;$lenthArray=array(0,16*60*$bi,//奎度、12*60*$bi,//娄度......
  • thinkphp---电子签章功能开发示例
    最近在做一个项目,需要开发电子签章的功能,也就是电子合同,下面:具体思路:利用PDF合成,将所需要的文字,图片,合成到PDF里面。首先下载Fpdi库:https://gitee.com/meiyouzhanghao/fpdi放到extend里面: 具体代码示例:<?phpnamespaceapp\index\controller;useapp\BaseControll......
  • 简单封装PhpSpreadsheet,实现PHP快速导入、导出xlsx
    简单封装PhpSpreadsheet,实现PHP快速导入、导出xlsx<?phpnamespacexfstu\tools;usePhpOffice\PhpSpreadsheet\Spreadsheet;usePhpOffice\PhpSpreadsheet\Writer\Xlsx;usePhpOffice\PhpSpreadsheet\IOFactory;/***@methodexport(array$field,array$data)简单封......
  • php 5.6
    返回值(语法)Nginx、php5.6+中打开⽹网站⾸首⻚页,显示:APHPErrorwasencounteredSeverity:NoticeMessage:OnlyvariablereferencesshouldbereturnedbyreferenceFilename:core/Common.phpLineNumber:257解决⽅方法:打开system/core/Common.php//将return$_c......
  • 自定义session Provider随笔[由多个请求阻塞排队处理发现]
    引用:Session,有没有必要使用它?usingIDH.Common.BaseInfoCacheManagement;usingNewtonsoft.Json;usingSystem;usingSystem.Collections.Generic;usingSystem.Collections.Specialized;usingSystem.Web;usingSystem.Web.SessionState;namespaceIdhWebApplication.E......
  • PHP获取浏览器,PHP获取IP地址,PHP获取设备型号
    <?php//获取浏览器functionget_broswer(){$sys=$_SERVER['HTTP_USER_AGENT'];//获取用户代理字符串$exp[0]="未知浏览器";$exp[1]="";//stripos()函数查找字符串在另一字符串中第一次出现的位置(不区分大小写)preg_match()执行匹配正则表达......
  • JetBrains PhpStorm 2023.3 (macOS, Linux, Windows) - 高效智能的 PHP IDE
    JetBrainsPhpStorm2023.3(macOS,Linux,Windows)-高效智能的PHPIDE请访问原文链接:https://sysin.org/blog/jb-phpstorm-2023/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgJetBrainsPhpStorm-高效智能的PHPIDE为什么选择PhpStorm享受高效的PHP观......
  • php运行流程
    SAPI运行PHP都经过下面几个阶段:1、模块初始化阶段(Moduleinit):即调用每个拓展源码中的的PHP_MINIT_FUNCTION中的方法初始化模块,进行一些模块所需变量的申请,内存分配等。2、请求初始化阶段(Requestinit):即接受到客户端的请求后调用每个拓展的PHP_RINIT_FUNCTION中......
  • SpringBoot高级开发(9)Spring中的HttpSession
    1、简述HttpSession是javaWeb提供的,用来处理会话事务的。session数据保存在后台,当然首次开启会话(即调用req.getSession())的时候也会将该SessionID数值传给前端用作Cookie2、作用范围首次访问服务器开始,浏览器关闭后就结束。后端的Session可以存储30分钟,如果30分钟无任何请求,就......