深入解析PHP会话管理:cookieURL参数与session_id()的使用技巧

cookie

深入解析PHP会话管理:cookieURL参数与session_id()的使用技巧

URL 参数

会话模块支持这两种方法。其中,cookie 更为优化,然而,由于它并不总是可用,所以也提供了替代的方法。第二种方法是直接将会话 ID 嵌入到 URL 中间。PHP 能够透明地转换连接。除非使用的是 PHP 4.2 或更低版本,否则需要在编译 PHP 时手动进行激活。在 Unix 环境中,可使用 --enable-trans-sid 这一配置选项。倘若此配置选项以及运行时选项 session.use_trans_sid 均被启动(对 php.ini 进行修改),那么相对 URI 将会被自动进行修改,使其包含会话 ID。

session_id

session_id()可用来设定或获取当前的 session_id 。在 php5 中,既能够使用 session_id(),又能够通过附加在 url 上的 SID 来获取当前会话的 session_id 以及 session_name 。倘若 session_id()有特定的指定值,那么就会取代当前的 session_id 值。使用该函数之前需要启动会话:session_start()。当我们运用 session cookies 时,如果设定了一个 session_id()的值,那么每次启动 session_start(),都会向客户端发送一个 cookie 值,不管当前的 session_id 是否与设定的值相同。如果 session_id()没有指定值,就返回当前的 session_id();如果当前会话没有启动,就返回空字符串。

检查 session 是否存在?

在之前的 php 版本里,一般是用 session_is_register()来检查 session 是否存在。倘若你通过 $_SESSION[‘XXX’]=XXX 这种方式去注册会话变量,那么 session_is_register()这个函数就不再起作用了。你可以通过使用 isset($_SESSION[‘xxx’]) 这种方式来进行替代。

更改 session_id

如果 session_regenerate_id() 更改成功,就会返回 true;如果更改失败,就会返回 false。使用这个函数能够为当前的 session 更改 session_id,然而不会改变当前 session 的其他信息。例如:

";
新的 SessionID 为:$new_sessionid
"; echo"
";
print_r($_SESSION);
echo"

session_name() 能够返回当前 session 的 name ,同时也可以改变当前 session 的 name 。倘若要对当前 session 的 name 进行改变,那么就必须在 session_start() 之前调用该函数。需要注意的是,session_name 不能仅仅由数字构成,它最少要包含一个字母。否则会在每一个时刻都生成一个全新的 session id。session 进行改名示例:

";
?>

如何删除 session?

unset($_SESSION['xxx'])可用于删除单个 session,它是用来注销一个已注册的 session 变量的,其作用与 session_unregister()相同。在 PHP5 中不再使用 session_unregister(),它已被弃用。不要使用 unset($_SESSION)这个函数,因为它会销毁全局变量 $_SESSION 且无法恢复。同时,用户也不能再注册 $_SESSION 变量。

使用 $_SESSION = array() 可以删除多个 session。

session_destroy()会将当前的会话结束,同时会把会话里的所有资源都清空。该函数不会释放和当前 session 相关的全局变量,也不会删除客户端的 session cookie。PHP 默认的 session 是以 cookie 为基础的,若要删除 cookie,就必须借助 setcookie()函数。

返回值:布尔值。

这个函数的作用是结束当前的 session。它没有参数,并且返回值始终为 true。

如果使用了$_SESSION,那么 session_unset()函数就不再起作用。因为 PHP5 必定要使用$_SESSION,所以这个函数可以被搁置不用了。

下面是 PHP 官方关于删除 session 的案例:

由此我们可以得出删除 Session 的步骤:

1session_start()

将 $_SESSION 赋值为空数组,即 $_SESSION = array();或者清除 $_SESSION 中名为 'xxx' 的元素,即 unset($_SESSION['xxx'])。

3session_destroy()

你可能想看:
« 上一篇
下一篇 »

相关推荐

php实时推送,php实地培训

2026年10月05日

53阅读

php乱码出现问号的原因,php乱码出现问号的原因有哪些

2026年10月05日

45阅读

php一句话木马,一句话木马ctf

2026年10月05日

48阅读

php获取数组长度,php中如何获取数组的长度

2026年10月05日

50阅读

php面试题库及答案,php程序员面试真题库

2026年10月05日

47阅读

phpcontent-type修改,php源码二次修改需要多少钱

2026年10月05日

42阅读