php session()函数使用方法详解
php session()函数在php开发应用中有很重要的一个角色了,下面我来给初学者简单的介绍一下关于php session()函数使用方法与实例。
对比起 Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 Session 的使用。
由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容,实际上在服务器端的 Session 文件,PHP 自动修改 Session 文件的权限,只保留了系统读和写权限,而且不能通过 ftp 修改,所以安全得多.
由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 的内容,实际上在服务器端的 Session 文件,PHP自动修改 Session 文件的权限,只保留了系统读和写权限,而且不能通过 ftp 修改,所以安全很多。
实例代码如下:
- <?php
- // 启动Session
- session_start();
- // 声明一个名为 admin 的变量,并赋空值。
- $_SESSION["admin"] = null;
- ?>
- <?php
- // 启动Session
- session_start();
- // 将原来注册的某个变量销毁
- unset($_SESSION['admin']);
- // 销毁整个 Session 文件
- session_destroy();
- ?>
- <?php
- // 启动Session
- session_start();
- // 保存一天
- $lifeTime = 24 * 3600;
- setcookie(session_name(), session_id(), time() + $lifeTime, "/");
- ?>
- <?php
- // 保存一天
- $lifeTime = 24 * 3600;
- session_set_cookie_params($lifeTime);
- session_start();
- $_SESSION["admin"] = true;
- ?>
- <?php
- // 保存一天
- $lifeTime = 24 * 3600;
- // 取得当前 Session 名,默认为 PHPSESSID
- $sessionName = session_name();
- // 取得 Session ID
- $sessionID = $_GET[$sessionName];
- // 使用 session_id() 设置获得的 Session ID
- session_id($sessionID);
- session_set_cookie_params($lifeTime);
- session_start();
- $_SESSION['admin'] = true;
- ?>
- <?php
- // 设置一个存放目录
- $savePath = './session_save_dir/';
- // 保存一天
- $lifeTime = 24 * 3600;
- session_save_path($savePath);
- session_set_cookie_params($lifeTime);
- session_start();
- $_SESSION['admin'] = true;
- ?>
另外,我们还可以使用 session_set_save_handler 函数来自定义 Session 的调用方式。
PHP函数补完:session_id()
session_id()
session_id() 存取目前 session 代号。
语法:string session_id(string [id]);
本函数可取得或者重新配置目前存放 Session 的代号,若无参数 id 则表示只有取得目前 Session 的代号,加上参数则表示将 Session 代号设成新指定的 id,输入及返回均为字符串。
输出 session_id(),代码如下:
- <?php
- session_start();
- echo session_id();
- // 输出 dqr58dnuqj2gufvg4o3tmjb9v4
- ?>
设置 session_id(),代码如下:
- <?php
- session_id("NowaMagic");
- session_start();
- echo session_id();
- // 输出 NowaMagic
- ?>
session_id 恢复 session的内容
php的session是可以程序恢复的,这个和java不太一样,session的恢复机制可以实现多个应用程序session的共享,因为php的session都是以文件形式或者数据库存储的,首先是session_id的获取是通过session_id()函数获取,这个值可以进行传递。
程序恢复session,首先要知道session_id,大家通过手册可以知道session的恢复通过session_id($id);但是在恢复时要注意一个先后顺序,要得到之前session的内容,必须在session_start()之前执行session_id($id),这样才能在执行了session_start时初始化session的时候恢复到之前的内容,否则的话你得到的是一个空的session,你什么也得不到。
之前session被重新初始化了,这个和session_start()的作用有密切关系,因为session_start告诉php,session要初始化,要从session文件中反序列化session内容,所以session_start的作用就是把之前存储的文件内容反序列化,session_start序列化之前要知道session_id,如果没有就生成一个新的session_id,如果有就反序列化相应文件的内容。