下面简单介绍一下PHP session。我觉得边肖挺好的。我现在就分享给你,给你一个参考。来和边肖一起看看吧。
现在程序员越来越难了。如果你想掌握它,你必须回到源头。这其实和目前泛滥的越来越高级的语言和众多的框架正好相反,因为他们都在尽可能的掩盖源码,让它变得简单。他们个人称之为程序员学习悖论。
注:作者接触web开发和php两周左右,以下内容适合初学者。
1.介绍
从本文的标题来看,对PHP Session的简单描述已经圈定了本文的内容范围,试图阐明Session(本文中称为Session)是如何在PHP语言中实现和使用的,重点在于基本理解后的使用。
文章的思路是先搞清楚什么是session,Session有什么用,Session用的例程是什么,在PHP中是怎么用的。
2、会话(Session)说明
开始之前先推荐一本基础理论书《HTTP权威指南》,是程序员的基础知识。作者有电子版,有需要可以留言。
a. Session的由来
几乎每个人都上网,数以亿计的数据在网络中相互传递。数据之所以能安全传输,是基于HTTP协议,大家很熟悉吧?其实HTTP协议做的就是提供一系列的方法来完成你的网络访问。原则上,当双方建立访问时,会话就建立了。说个例子:小明在浏览器中输入https://www.baidu.com/(HTTPS是HTTP的加密版,相对于SSL加密层)。这是小明对百度的请求,说“我想看看你的界面。”百度的服务器收到信息,里面有小明想做什么,还有小明的地址(不然百度不知道把内容给谁)。这是一段对话,对话的核心在于小明的信息归档(其实也涉及TCP/IP的连接,与本文无关,忽略)。
事实上,将访问总结为一个会话比构建一个会话更好。
b. Session能干什么用
从上面可以看出,每次访问都是一个会话,服务器要记录信息,成本很高。同时,同一个人连续十次访问后十次二十次的构建和保存也不太可能。一个是增加成本,一个也是蠢。也就是说,一个人(确切的说是同一台电脑和浏览器)在一定时间内可以复用一个会话。为什么在某个时间?因为会话有一个默认的过期时间,过期后会清理服务器(如果没有,你想想世界上那么多人,留一个也是亏)。
好了,既然是同一个人,多次访问都是一个会话(不要怀疑服务器识别不出同一个人,详见上面推荐的书),每次访问的内容都有记录,那么也就是说,你会话周期内的所有行为服务器都知道了,那么下一个重要角色就来了。服务器可以通过分析你的访问请求来获知这个特定用户的行为偏好,通过做一定的分析可以推送一些。
当然可能还有其他用户,性能等等。个人对机制不是特别了解,这里就这样了。
3、PHP中Session的使用
通过上面的赘述,我们可以发现,会话的概念其实是发生在服务器端的。PHP提供了一系列的配置,函数等。很好地实现了会话功能。在PHP中,通过在并发访问期间保存一些数据的方法来支持会话,这使您能够构建更多的定制程序来提高网站的吸引力。访问您网站的访问者将被分配一个唯一的id,称为会话id。这个id可以存储在用户端的cookie中。也可以通过URL传递。会话支持允许您将请求中的数据保存在hyperglobal array $_SESSION中。当访问者访问您的网站时,PHP将自动检查(如果session.auto_start设置为1)或应您的请求(显式地通过session_start()或隐式地通过session_register())当前会话id是否是由以前发送的请求创建的。如果是这种情况,将重建以前保存的环境。
a. php中session基本用法
通过为每个独立用户分配唯一的会话ID,可以实现为不同用户存储数据的功能。会话通常用于在多个页面请求之间保存和共享信息。一般来说,会话ID通过cookie发送到浏览器,会话中的数据在服务器端通过会话ID检索。如果请求不包含会话ID信息,那么PHP将创建一个新的会话,并为新创建的会话分配一个新的ID。
会话的工作流程非常简单。当启动一个会话时,PHP将试图从请求中找到会话ID(通常通过会话cookie)。如果请求不包含会话ID信息,PHP将创建一个新的会话。会话开始后,PHP会将会话中的数据设置到$_SESSION变量中。PHP停止时会自动读取$_SESSION中的内容,进行序列化,然后发送到会话保存管理器进行保存。默认情况下,PHP使用内置的文件会话保存管理器(files)来保存会话。您还可以通过配置项目Session . save _ handler(PHP . ini中的配置项目)来修改要使用的会话保存管理器。对于文件会话保存管理器,会话会话数据保存到配置项Session . save _ path(PHP . ini中的配置项)指定的位置。您可以通过调用函数session_start来手动启动会话。如果配置项Session.auto_start设置为1,则会话将在请求启动时自动启动。PHP脚本执行后,会话将自动关闭。同时,您也可以通过调用函数session_wirte_close()来手动关闭会话。
b. php中session信息在php.ini中配置
这部分内容放在这里是因为,不解释前面的问题,天知道php.ini里的配置是什么。上面提到的session.save_handler和session.save_path是php.ini中的配置项,这里我就不赘述了,因为php手册太详细了。本文的默认模式是文件。
c. php中的session机制
Session_start()是会话机制的开始,会话会确定当前是否有$ _ COOKIE[session _ name()];Session_name()返回保存session_id的COOKIE的键值。如果不存在,它将生成一个session_id,然后将生成的session_id作为COOKIE值传递给客户端。它相当于下面的COOKIE操作。相反,如果有session _ id=$ _ cookie[session _ name];然后转到session.save_path指定的文件夹,找到名为“SESS_”的文件。session_id()。读取文件的内容并将其反序列化,然后将其放入$_SESSION中。
在会话结束时,将手动执行会话写操作或session_write_close()操作。
代码里面销毁Session一般有三个方法,
1.setcookie(session_name(),session_id(),time() -8000000,);//注销前执行。
2.usset($ _ SESSION);//这将删除所有$_SESSION数据。刷新后,有COOKIE来,但没有数据。
3.session _ destroy();//Delete $_SESSION删除会话文件和会话id
附录,引用网络上的一段代码,结束。
span=' white-space:pre '/span//当会话初始化时调用
函数打开($保存路径,$会话名称)
{
global $ sess _ save _ path
$ sess _ save _ path=$ save _ path
返回(真);
}
//关闭的时候调用
函数关闭()
{
返回(真);
}
函数读取($id)
{
全局$ sess _ save _ path
$ sess _ file=' $ sess _ save _ path/sess _ $ id ';
return(string)@ file _ get _ contents($ sess _ file);
}
//脚本执行结束之前,执行写入操作
函数写入($id,$sess_data)
{
全局$ sess _ save _ path
$ sess _ file=' $ sess _ save _ path/sess _ $ id ';
if ($fp=@fopen($sess_file,' w '){
$return=fwrite($fp,$ sess _ data);
fclose($ FP);
return $ return
}否则{
返回(假);
}
}
函数销毁($id)
{
全局$ sess _ save _ path
$ sess _ file=' $ sess _ save _ path/sess _ $ id ';
return(@ unlink($ sess _ file));
}
函数垃圾收集器(最大生命周期)
{
全局$ sess _ save _ path
foreach(glob(' $ sess _ save _ path/sess _ * ' as $ filename){
if(文件时间($文件名)$ maxlifetimetime()){
@ unlink($ filename);
}
}
返回真实的
}
以上这篇简单服务器端编程语言(专业超文本预处理器的缩写)会话(会话)说明介绍就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。