您的位置:老铁SEO > 站长新闻 > 网站技术 >

php打开会话代码_关于php设置会话有效期

文章来源:人民日报

作者:seo教程

人气:20

2021-11-04 06:02:26

Session 的工作机制

客户端第一次访问服务器,为每个访问者创建一个唯一的id (UID),并基于这个UID存储变量。uid存储在cookie中或通过URL传输。

sessionID的生产算法原理如下:

hash _ func=MD5/sha1 # session id=hash _ func(客户端IP当前时间(秒)当前时间(细微)PHP自带的随机数生成器)可以通过php.ini进行配置

根据hash_func(*)中数据采样值的内容分析,同一台服务器上多个用户产生重复sessionID的概率极低(至少百万分之一)。

黑客要想猜出用户的sessionID,在模拟之前还必须知道“客户端IP、当前时间(秒、微妙)、随机数”等数据。

php.ini配置如下:

;选择用于生成会话id的哈希函数。

;可能的值

;0 (MD5 128位)

;1 (SHA-1 160位)

;此选项也可以设置为支持的任何哈希函数的名称

;哈希扩展。hash_algos()返回可用哈希的列表

;功能。

;http://php.net/session.hash-function

session.hash_function=0

PHP session工作原理

会话技术相当于Cookie技术的升级版本。Cookie的工作机制是在客户端记录信息,而会话技术是在服务器端存储信息。服务器存储信息的方式有很多,比如文件、数据库和内存。这里从文件存储的角度介绍Session的工作步骤。

(1)客户端第一次访问服务器。

(2)服务器通过Cookie将sessionID发送给客户端,并在服务器中创建一个与sessionID同名的文件来存储信息,但sessionID不能重复,即不同客户端的sessionID不同。

(3)当客户端再次访问服务器时,会携带服务器发送给客户端的sessionID。

(4)服务器根据客户端发送的sessionID搜索对应的文件,读取文件内容。

从以上步骤可以看出,session的工作依赖于cookies的工作。当然,sessionID可以在没有cookie的情况下传输,比如URL,但是cookie是最方便的。

PHP本身的session是如何工作的呢

首先,在需要共享客户端信息的文件中通过session_start()函数打开会话,然后将数据保存或读取到$_SESSION全局数组中。与其他数组不同,PHP在向数组中添加数据时会将数据序列化到会话文件中。每次打开会话,PHP都会将会话文件中的数据读入全局数组,实现数据共享的功能。

php_cli模式通过session_id()使用session

可以用来获取当前会话的PHPSESSID,也可以用来设置当前会话的PHPSESSID。在php_cli模式下,可以通过设置这个来达到使用session的目的,非常方便。

例如:

?服务器端编程语言(Professional Hypertext Preprocessor的缩写)

//session _ id(' vingbrv 8m 64 asth 0 nhplu 9 gmb 7 ');

session _ start();

$_SESSION[md5(rand(100,999))]=rand(100,999);

var _ dump($ _ SESSION);

下面看看一个实际例子,助你加强对session的认识

//初始化时调用SESSION。

函数open($save_path,$session_name)

{

全局$ 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);

}

//在脚本执行结束前执行写操作。

函数write($id,$sess_data)

{

echo“SDF SF”;

全局$ sess _ save _ path

$ sess _ file=' $ sess _ save _ path/sess _ id ';

if ($fp=@fopen($sess_file,' w '){ }

$return=fwrite($fp,$ sess _ data);

fc lose(FP美元);

return $ return

} else {

返回(假);

}

}

函数销毁($id)

{

全局$ sess _ save _ path

$ sess _ file=' $ sess _ save _ path/sess _ id ';

return(@ unlink($ sess _ file));

}

函数gc($maxlifetime)

{

全局$ sess _ save _ path

foreach(glob($ sess _ save _ path/sess _ *)作为$ filename){ 0

if(file mtime($ filename)$ max lifetime time()){ 0

@ unlink($ filename);

}

}

返回真;

}

补充涉及到的函数

session _ start();//打开会话回复,其中session_id()的值是独立会话的符号。

session _ name();//默认为PHPSESSID,可以在php.ini文件中自行配置。

session _ id();//在cookie中,session_name是密钥,session_id是值。

setcookie();//要记住该功能,必须刷新页面。

session _ destory();//session _ destroy-销毁会话中的所有数据。

相关文章

在线客服

外链咨询

扫码加我微信

微信:juxia_com

返回顶部