查看网站所有会话_PHP-会话控制

news/2024/5/9 4:31:27/文章来源:https://blog.csdn.net/weixin_39742065/article/details/111039092

会话控制

因为 HTTP 是无状态的协议,没有办法记录多个事务请求间的状态。即访问一个页面请求后再请求另一个页面时无法判断两次请求来自同一下用户。

会话原理

在PHP中实现会话的原理是为用户分配一个唯一的加密ID,并保存在用户客户端,并在整个会话时间周期内有效。

一般情况下使用cookie来进行保存,但也可以通过url传递。

用户通过携带会话ID到服务器获取内容。

COOKIE

cookie是客户端存储数据的手段,并在请求服务器时自动携带cookie数据。

设置

PHP中使用 setcookie() 函数用户客户端cookie数据。

setcookie ( string $name [, string $value = "" [, int $expires = 0 [, string $path = "" [, string $domain = "" [, bool $secure = FALSE [, bool $httponly = FALSE ]]]]]] ) : bool

参数说明如下:

参数说明nameCookie的名称valuecookie的价值。该值存储在客户端计算机上; 不要存储敏感信息expiresCookie过期的时间。这是一个Unix时间戳,可以使用time()函数加上希望它到期之前的秒数来设置它。path服务器上可以使用cookie的路径。如果设置为“/”,则cookie将在整个范围内可用domaincookie可用的域。(例如“www.houdunren.com”)将使cookie可用于该子域及其所有其他子域(即http://w2.www.houdunren.com)。要使cookie可用于整个域(包括其所有子域),只需将值设置为域名(在本例中为“houdunren.com”secure表示cookie应仅通过客户端的安全HTTPS连接传输httponlyTRUEcookie只能通过HTTP协议访问时。这意味着脚本语言(例如JavaScript)无法访问cookie。

读取

因为cookie保存在客户端并在请求时提交到后台服务器,所以可以在前台与后台访问到cookie。

前台使用 document.cookie 获取cookie数据

document.cookie

后台使用超全避数组$_COOKIE读取

print_r($_COOKIE);

使用

设置会话cookie,当关闭浏览器时自动删除

setcookie('web','houdunren.com');

设置七天内有效的cookie

setcookie('web','houdunren.com',time()+60*60*24*7);

只允许cookie在 /app 访问路径中有效

setcookie('web','houdunren.com',0,'/app')

设置访问域名

setcookie('web','hdcms.com',0,'/','php.test')

设置只允许https访问

setcookie('web','hdcms.com',0,'/','',true);

不允许javascript操作cookie

setcookie('web','hdcms.com',0,'','',false,false,true);

cookie的到期时间设置为过去时间,就可以删除cookie。

setcookie('name','',1);

SESSION

session是服务器会话状态,可用于记录访问用户后台会话数据。

基本使用

开启会话

必须要开启 SESSION 才可以使用,有两种方法可以开启会话。

  1. 使用脚本开启会话,要保证在使用会话的所有脚本中执行。
session_start();
  1. 通过修改php.ini配置项 session.auto_start,自动开启会话(不建议使用)

会话变量

使用超全局数组 $_SESSION 来使用会话变量。

设置变量

$_SESSION['name']='houdunren.com';

删除变量

unset($_SESSION['name']);

删除所有变量

$_SESSION = [];
# 或使用函数删除
session_destroy();

常用函数

session_save_path

设置服务器会话数据储存目录,必须在session_start前使用。

session_id

通过 session_id 函数来获取/设置当前会话 ID。

session_name

获取或设置会话COOKIE名称,如果设置会话名称则需要在session_id前调用。

垃圾回收

session.gc_probability

session清除无效session的基率。

session.gc_divisor

启动垃圾回收程序的概率。概率计算公式为:session.gc_probability/session.gc_divisor,如果网站访问量大建议将概率降低如 1/1000~5000。

session.gc_maxlifetime

session文件过期时间,超过这个时间没有使用的session将视为垃圾,将在下次垃圾回收时删除。

自定义驱动

自定义SESSION处理驱动可以让我们更灵活的管理SESSION,并更好的服务我们网站业务。

<?php
class FileHandle implements SessionHandlerInterface
{//写入目录protected $path = 'session';//过期时间protected $maxlifetime = 1440;/*** 构建函数** @param string $path 保存目录* @param integer $maxlifetime 过期时间*/public function __construct(string $path = 'session', int $maxlifetime = 1440){$this->path = realpath($path);$this->maxlifetime = $maxlifetime;}/*** 关闭** @return void*/public function close(){return true;}/*** 销毁** @param [type] $session_id* @return void*/public function destroy($session_id){return (bool)@unlink($this->path . '/' . $session_id);}/*** 垃圾回收** @param [type] $maxlifetime* @return void*/public function gc($maxlifetime){foreach (glob($this->path . '/*') as $file) {if (filemtime($file) + $this->maxlifetime < time()) {@unlink($file);}}return true;}/*** 开启** @param [type] $save_path* @param [type] $session_name* @return void*/public function open($save_path,  $session_name){is_dir($this->path) or mkdir($this->path, 0755, true);return true;}/*** 读取会话数据** @param [type] $session_id* @return void*/public function read($session_id){return file_get_contents($this->path . '/' . $session_id);}/*** 写入会话** @param [type] $session_id* @param [type] $session_data* @return void*/public function write($session_id,  $session_data){return (bool)file_put_contents($this->path . '/' . $session_id, $session_data);}
}

调用方法

<?php
include 'Session.php';
//声明会话引擎
session_set_save_handler(new FileHandle);
session_start();
$_SESSION['web'] = 'houdunren.com';
$_SESSION['cms'] = 'hdcms.com';print_r($_SESSION);

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要

PHP进阶架构师>>>视频、面试文档免费获取​docs.qq.com
7aaa27884ddcccfab4ffdca611c75ef4.png

或者关注咱们下面的专栏

PHP架构师之路​zhuanlan.zhihu.com
e37451ce9a85cb1de487c8ee7a46b879.png
来源:https://www.cnblogs.com/pengcode/p/12585381.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_752445.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站URL网址末尾是否应该使用反斜杠

2019独角兽企业重金招聘Python工程师标准>>> 当对网站进行SEO优化时&#xff0c;难免会遇到因为URL导致的重复页面问题&#xff0c;其中一个比较常见的现象就是因页面地址后是否有添加反斜杠造成的&#xff0c;举例如下&#xff1a; 链接A&#xff1a; www.example.…

Redis网站热搜关键词加载实践,建议收藏

侠梦的开发笔记回复【面试题】获取2021年最新java面试题合集&#xff5e;来源&#xff1a;Catcher8www.cnblogs.com/catcher1994/p/5877262.html对于一个网站来说&#xff0c;无论是商城网站还是门户网站&#xff0c;搜索框都是有一个比较重要的地位&#xff0c;它的存在可以说…

一例千万级pv高性能高并发网站架构

2019独角兽企业重金招聘Python工程师标准>>> 受CU管理员的邀请参考“千万级pv高性能高并发网站架构与设计交流探讨帖”主题的交流&#xff0c;发表了一案例与大家分享。 一个支撑千万级PV的网站是非常考验一个架构是否成熟、健壮(本文不涉及软件架构的层面&am…

黑科技Python轻松爬取网站信息,看完我是佩服得五体投地!

1. 引言 本文主要介绍如何使用Scrapy结合PhantomJS采集天猫商品内容&#xff0c;文中自定义了一个DOWNLOADER_MIDDLEWARES&#xff0c;用来采集需要加载js的动态网页内容。看了很多介绍DOWNLOADER_MIDDLEWARES资料&#xff0c;总结来说就是使用简单&#xff0c;但会阻塞框架&a…

牛掰!10年python爬虫经验开发的案例让你搞定全球80%以上的网站

项目要求&#xff1a; 用户入口 1、商品信息存在文件里 2、已购商品&#xff0c;余额记录。 商家入口 可以添加商品&#xff0c;修改商品价格 商家入口&#xff1a; # Author:P J Jimport osps 1 >>>>>> 修改商品 2 >>>>>> 添加商…

快就完事了!10分钟用python爬取网站视频和图片

话不多说&#xff0c;直接开讲&#xff01;教你如何用Python爬虫爬取各大网站视频和图片。 网站分析&#xff1a; 我们点视频按钮 可以看到url是&#xff1a; http://www.budejie.com/video/ 接着我们点开网页源码&#xff0c;看下面之处 接着我们把那个下面画红线的链接点开…

Python监控术,看看你的男女朋友究竟在逛些什么网站!

需求&#xff1a; (1) 获取你对象chrome前一天的浏览记录中的所有网址(url)和访问时间&#xff0c;并存在一个txt文件中 (2)将这个txt文件发送给指定的邮箱地址(你的邮箱) (3)建立例行任务&#xff0c;每天定时自动完成这些操作&#xff0c;你就可以通过邮件查看你对象每天看…

转帖一下《深入理解Nginx》在线支持网站的勘误,访问太慢了

2019独角兽企业重金招聘Python工程师标准>>> 《深入理解Nginx》在线支持网站 勘误公布 示例源码 答疑解惑 作者博客 微博互动 在线支持网站更改为&#xff1a;http://nginx.taohui.org.cn请大家访问新的站点&#xff0c;谢谢。 勘误公布 由于编写匆忙&#x…

一般网站有哪些常见漏洞?

Web应用是指采用B/S架构、通过HTTP/HTTPS协议提供服务的统称。随着互联网的广泛使用&#xff0c;Web应用已经融入到日常生活中的各个方面&#xff1a;网上购物、网络银行应用、证券股票交易、政府行政审批等等。在这些Web访问中&#xff0c;大多数应用不是静态的网页浏览&#…

每次Nginx 配置都浪费在了查资料上!来看看这个(在线配置网站)

Nginx 是一个高性能的 HTTP 和反向代理 web 服务器&#xff0c;同时也提供了 IMAP/POP3/SMTP 服务&#xff0c;其因丰富的功能集、稳定性、示例配置文件和低系统资源的消耗受到了开发者的欢迎。本文&#xff0c;我们总结了一些常用的 Nginx 配置代码&#xff0c;希望对大家有所…

tableau指标预警_如何使用Tableau分析敏捷,开发和网站指标

tableau指标预警开发人员在设计&#xff0c;开发&#xff0c;测试&#xff0c;部署和管理应用程序时使用了许多生产力&#xff0c;编码&#xff0c;测试和云管理工具。 尽管大多数工具都提供报告和分析功能&#xff0c;但技术团队可能有充分的理由开发自己的报告功能&#xff0…

有什么网站下载 消防编程软件_8个无套路下载软件的网站推荐给你

我曾经在一个朋友的电脑上看到过市面上的所有浏览器&#xff0c;我问他是做网页开发吗&#xff1f;他说他也不知道自己电脑怎么就莫名其妙安装了这么多浏览器。 效率君想了想&#xff0c;应该是这个原因。 先讲个我自己的经历吧。 前两天效率君想把Ps升级到2020&#xff0c;在百…

网站上线之前,基于SEO,该做哪些测试?

对于任何一个网站而言&#xff0c;在新站上线之初&#xff0c;每个SEO人员&#xff0c;都需要进行缜密的测试&#xff0c;用于辅助网站正式上线后&#xff0c;可以在搜索引擎中&#xff0c;有一个不错的排名。那么&#xff0c;新网站测试&#xff0c;都需要注意什么&#xff1f…

网站爬取工具

有时候需要将网站资源爬取到本地&#xff0c;文件少的情况下可以使用Chrome一个个保存。如果文件太多&#xff0c;则需要使用下面的辅助工具。 1.Teleport Ultra(不是Teleport Pro) 优点&#xff1a;爬取文件以及结构比较完整&#xff1b; 缺点&#xff1a;会修改原文件。会在j…

达内网站的标签翻页功能,模仿代码

参考网址&#xff1a;http://xm.tedu.cn/baidu/dnpp/?xmjavaqzs20170524fzct023&utm_term达内培训&ca_kid65421413813&ca_cv17282834319 【代码】 HTML&#xff1a; <div class"banner-wrap"><div class"container"><div clas…

几个不错的解密(MD5,SHA256等)网站

cmd5这个解密网站我相信大多数人都知道吧&#xff0c;数据库还是非常庞大的&#xff0c;一般的解密需求足够了&#xff0c;如果比较复杂就要付费了。网址&#xff1a;http://www.cmd5.com/PMD5解密&#xff0c;效果也不错&#xff0c;不收费&#xff0c;所以解密能力也有限。网…

谷歌新上线了一个安卓游戏开发者网站

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; 谷歌为 Android 游戏开发者上线了一个网站。新网站自称 Android 游戏开发“中心”&#xff0c;目的在于帮助开发者为 Android 系统开发更有趣的手游。该网站可以帮助开发者寻找资源和工具&#…

组织官方网站建设记录贴-程序选型

服务器环境&#xff1a;IIS7.5 php mysql需求&#xff1a;开发一个组织的官方网站&#xff0c;包含组织基本信息介绍、新闻、单位会员、个人会员基本信息展示、留言板、背景音乐等基础功能。根据需求&#xff0c;使用思维导图软件画出网站大概结构。根据网站大概结构对互联网…

babylon.js 2d_Babylon.js:超越2D网站

babylon.js 2d自从我们开始向Flash告别以来&#xff0c;网络已经取得了长足的发展。 现在&#xff0c;由于HTML 5及其JavaScript图形API名册&#xff0c;我们在动画插件中可以做的大部分工作都是浏览器固有的。 最重要的之一是WebGL&#xff0c;它使浏览器可以访问GPU并提供交互…

ASP.NET Core 网站在Docker中运行

Docker作为新一代的虚拟化方式&#xff0c;未来肯定会得到广泛的应用&#xff0c;传统虚拟机的部署方式要保证开发环境、测试环境、UAT环境、生产环境的依赖一致性&#xff0c;需要大量的运维人力&#xff0c;使用Docker我们可以实现一次部署&#xff0c;到处运行。本文介绍如何…