苏飞论坛

标题: PHP中的Session与Cookie(1) [打印本页]

作者: 惜    时间: 2018-12-19 09:19
标题: PHP中的Session与Cookie(1)
本帖最后由 惜 于 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 因为是存储在服务器端,所以它的生命期很短。注册过的变量过段时间就会自动失效。


作者: 竹林风    时间: 2018-12-19 12:10
看到这帖子真是高兴!
作者: Amy    时间: 2018-12-19 15:44
强烈支持楼主ing……
作者: 范范    时间: 2018-12-19 16:23
激动人心,无法言表!




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4