本帖最后由 惜 于 2018-12-19 09:19 编辑
常用的 Session 相关函数
函 数 名 | 作 用 | 参数及返回值 | session_start(void) | 此函数初始化一个新的Session,
若该客户已在Session之中,则连上原有的Session | 该函数没有参数,且返回值均为True。
需要注意的一点是,在session_start()函数之前不能有任何的内容输出,否则就会发生错误 | session_destroy(void) | 此函数结束目前的Session | 与session_start()函数一样,session_destroy()函数也没有参数,
且返回值也均为True | session_name(string [name]) | 本函数可取得或者重新设定目前Session的名称 | 若无可选参数name则表示单单获取目前Session名称,
加上参数则表示将Session名称设为参数name | session_module_name(string [module]) | 本函数可取得或者重新设定目前Session的模组 | 若无可选参数module则表示只获取目前Session的模组,
加上参数则表示将Session模组设为参数module | session_save_path(string [path]) | 本函数可取得或者重新设定目前存放Session的路径 | 若无可选参数path则表示只有取得目前Session的路径目录名,
加上参数path则表示将Session存在新的路径上 | session_id(string [id])函数 | 本函数可取得或者重新设定目前存放Session的代号 | 若 无 参 数 id 则 表 示 只 有 取 得 目 前Session的代号,
加上参数则表示将Session代号设成新指定的id。输入及传回均为字串 | session_register(string name) | 本函数在全局变量中增加一个变量到目前的Session之中 | 参数name为欲检查的变量名。如果注册则返回True,反之则返回False | session_unregister(string name) | 本函数与session_register()函数相反为,
功能是在目前的Session之中删除全局变量上的变量 | 参数name即为欲删除的变量名。成功则返回True值,反之则返回False | session_is_registered(string name) | 本函数可以检查某个变量名是否已经被注册为Session | 参数name为欲检查的变量名。如果注册则返回True,反之则返回False | session_decode(string data) | 本函数可将Session内的资料解码 | 参数data即为欲解码的资料。成功则返回True值,否则返回False | session_encode(void) | 本函数可将Session资料编码,编码以ZEND引擎做杂凑编码 | 本函数没有参数。成功则返回True值,否则返回False |
[PHP] 纯文本查看 复制代码 <?php session_start(); ?>
<html>
<head>
<title>session 使用实例</title>
</head>
<body>
<?php
$count = $_SESSION["usercount"];
echo "<br>";
if($count == ""){
$_SESSION["usercount"] = 1;
echo $_SESSION["usercount"];
}else{
$count = $count + 1;
$_SESSION["usercount"] = $count;
echo $count;
}
?>
</body>
</html>
使用 Session 的注意事项
如果在 PHP.ini 文件中启用了 session.auto_start,就不能将对象放入会话中,因为类定义必须在启动会话之前加载以在会话中重建对象 请求结束后所有注册的变量都会被序列化。已注册但未定义的变量被标记为未定义。在此后的访问中这些变量也不会被会话模块定义,除非用户以后定义它们。 另外有些类型的数据不能被序列化,因此也就不能保存在会话中。包括 resource 对象类型变量或者有循环引用的对象(即某对象将一个指向自己的引用传递给另一个对象)。 默认情况下,所有与特定会话相关的数据都被存储在由 php.ini 文件的 session.save_path 选项所指定的目录下的一个文件中。对每个会话建立一个文件(不论是否有数据与该会话相关)。这是由于每打开一个会话即建立一个文件,不论是否有数据写入到该文件中。注意由于和文件系统协同工作的限制,此行为有个副作用,有可能造成用户定制的会话处理器(例如用数据库)丢失未存储数据的会话。 如果 php.ini 的配置没有开启 register_globals,则只可以用_SESSION 数组来引用 Session 变量。如,注册的$var 变量只能这样引用“$_SESSION["var"]”。而如果开启了 register_globals 选项,则可以直接使用$var。 由于 Cookie 存在于客户端,所以它可以被设置为长时间甚至是无限期存在。而 Session 因为是存储在服务器端,所以它的生命期很短。注册过的变量过段时间就会自动失效。 |