当前位置:首页 > Web开发 > 正文

可以再调用 session_name()函数时提供参数改变当前 Session 的名称

2024-03-31 Web开发

一般通过在各个页面之间通报的独一的 Session ID,并通过 Session ID 提取这个用户在处事器中生存的 Session 变量,来跟踪一个用户。常见的 Session ID 传送要领主要有两种。

大理石机械构件维修厂家

第一种要领是基于 Cookie 的方法通报 Session ID,这种要领对照优化,但是不能经常使用,因为用户在客户端可以屏蔽Cookie 。

第二种要领例是通过 URL 参数进行通报,直接将会话 ID 嵌入到 URL 中去。

在 Session 的实现中凡是都是给与基于 Cookie的方法,客户端生存的 Session ID 就是一个 Cookie 。当客户端禁用 Cookie时,Session ID就不能再 Cookie 中生存,也就不能再页面之间通报,此时 Session掉效。不过在 Linux 平台上可以自动查抄 Cookie 状态,如果客户端禁用它,则系统自动把 Session ID 附加到 URL 上传送。而使用 Windows 系统则没有此成果。

1.通过 Cookie 来通报 Session ID

如果客户端没有禁止 Cookie,则在 PHP脚本中通过 session_start()函数进行初始化后,处事器会自动发送 HTTP 标头将 Session ID 生存到客户端计算机的 Cookie 中。类似如下的的设置方法:

虚拟向 cookie 中设置 Session ID 的过程

1

 

setcookie(session_name(), session_id(), 0, ‘/‘)

 

第一个参数挪用 session_name()函数,返回当前 Session 的名称作为 Cookie的标识名称。可以再挪用 session_name()函数时供给参数转变当前 Session 的名称。

第二个参数挪用 session_id()函数,返回当前 Session ID 作为 Cookie 的值。也可以通过挪用 session_id()函数时供给参数设定当前的Session ID。

第三个参数值为 0,通过在php.ini文件中由 session.cookie_lifetime 选项设置的值。默认为0,暗示 Session ID 将在客户真个 Cookie 中延续到浏览器封锁。

第四个参数 “ / ”,也是通过PHP配置文件指定的值,在 php.ini 中由 session.cookie_path 选项设置的值。默认为 “ / ”,暗示在cookie 中要设置的路径在整个域内都有效。

2. 通过 URL 来通报 Session ID

如果客户端浏览器撑持 Cookie,就把 Session ID 作为 Cookie 生存在浏览器中。但如果用户禁止 Cookie 的使用,则浏览器中就不存在作为 Cookie 的 Session ID,因此在客户端请求中不包罗 Cookie 信息。如果挪用 session_start()函数时,无法从客户端浏览器中取得作为 Cookie 的 Session ID,则又创建了一个新的 Session ID,也就无法跟踪用户状态。 因此,每次用户请求撑持 Session 的 PHP脚本,session_start()函数在开启 Session 时城市创建一个新的 Session,这样就掉去了跟踪用户状态的成果。

在 PHP 中供给了跟踪 Session 的另一种机制,如果客户端浏览器不撑持 Cookie,则 PHP 可以重写客户端请求 URL,把

Session ID 添加到 URL 中。可以手动在每个超链接的 URL 中都添加一个 Session ID,这种要领事情量对照大,一般不建议使用这种方法。其示例的代码如下所示:

1

2

3

4

5

6

 

<?php

//开启 session

session_start();

// 在 URL 后面附加参数,变量名为session_name()获取的名称,,值为session_id()获取

echo ‘<a href="test.php?‘.session_name().‘=‘.session_id().‘">演示</a>‘;

?>

 

https://www.bzddrive.com/ddmdyl/1339.html

php中如何通报Session ID

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31465.html