教你如何使用php session


Posted in PHP onOctober 28, 2013

PHP session用法其实很简单它可以把用户提交的数据以全局变量形式保存在一个session中并且会生成一个唯一的session_id,这样就是为了多了不会产生混乱了,并且session中同一浏览器同一站点只能有一个session_id,下面我们一起来看看关于session使用方法。
如何使用session,凡是与session有关的,之前必须调用函数session_start();
为session赋值很简单,如:

<?php
Session_start();
$Name = "这是一个Session例子";
Session_Register("Name");//注意,不要写成:Session_Register("$Name");
Echo $_SESSION["Name"];
//之后$_SESSION["Name"]为"这是一个Session例子"
?>

在php4.2之后,可以为session直接赋值:
<?PHP
Session_Start();
$_SESSION["name"]="value";
?>

取消session可以这样:
<?php
session_start();
session_unset();
session_destroy();
?>

读取 session

PHP 内置的 $_SESSION 变量可以很方便的访问设置的 session 变量。

<?php
session_start();
echo "登记的用户名为:".$_SESSION["username"];    //输出 登记的用户名为:nostop
?>

检查变量是否被登记为会话变量 session_is_registered
语法:boobean session_is_registered(string name);
这个函数可检查当前的session之中是否已有指定的变量注册,参数name就是要检查的变量名。成功则返回逻辑值true。
<?php
    session_start();
    if(!session_is_registered("gender")){ //判断当前会话变量是否注册
        session_register("gender");    //注册变量
    }
    $gender="女";
    echo $_SESSION['gender'];  //女
?>

存取当前会话名称  session_name
语法:boolean session_name(string [name]);
这个函数可取得或重新设置当前session的名称。若无参数name则表示获取当前session名称,加上参数则表示将session名称设为参数name。

<?php
$sessionName = session_name();   //取得当前 Session 名,默认为 PHPSESSID
$sessionID = $_GET[$sessionName];   //取得 Session ID
session_id($sessionID);      //使用 session_id() 设置获得的 Session ID
?>

存取当前会话标识号session_id
语法:boolean session_id(string [id]);
这个函数可取得或重新设置当前存放session的标识号。若无参数id则表示只获取当前session的标识号,加上参数则表示将session的标识号设成新指定的id。
设置 Session 的生存期

<?php
    session_start
    // 保存一天
    $lifeTime = 24 * 3600;
    setcookie(session_name(), session_id(), time() + $lifeTime, "/");
?>

session_set_cookie_params:设置 Session 的生存期的,该函数必须在 session_start() 函数调用之前调用。
如果客户端使用 IE 6.0 , session_set_cookie_params(); 函数设置 Cookie 会有些问题,所以我们还是手动调用 setcookie 函数来创建 cookie。
<?php
// 保存一天
$lifeTime = 24 * 3600;

session_set_cookie_params($lifeTime);

session_start();

$_session["admin"] = true;
?>

设置 Session 文件的保存路径
session_save_path() :必须在 session_start() 函数调用之前调用。

<?php
// 设置一个存放目录

$savePath = "./session_save_dir/";

// 保存一天

$lifeTime = 24 * 3600;

session_save_path($savePath);

session_set_cookie_params($lifeTime);

session_start();

$_session["admin"] = true;
?>

<?php
session_start();    //启动Session
$username='nostop';
session_register('username');    //注册一个名为username变量
echo '登记的用户:'.$_SESSION['username'];    //登记的用户:nostop   读取Session变量
$_SESSION['age']=23;    //声明一个名为age的变量,并赋值
echo '年龄:'.$_SESSION['age']; //年龄:23
session_unregister('username'); //注销Session变量
echo $_SESSION['username'];  //空
echo $_SESSION['age'];//23
unset($_SESSION['age']); //注销Session变量
echo '登记的用户:'.$_SESSION['username']; //空
echo '年龄:'.$_SESSION['age']; //空
?>

注意:

1:在调用Session_Start()之前不能有任何输出.例如下面是错误的.

1行
2行 <?PHP
3行 Session_Start();//之前在第一行已经有输出
4行 .....
5行 ?>

提示1:

凡是出现"........headers already sent..........",就是Session_Start()之前向浏览器输出信息.
去掉输出就正常,(COOKIE也会出现这种错误,错误原因一样)

提示2:

如果你的Session_Start()放在循环语句里,并且很难确定之前哪里向浏览器输出信息,可以用下面这种方法:
1行 <?PHP Ob_Start(); ?>
........这里是你的程序......

2:这是什么错误

Warning: session_start(): open(/tmpsess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) failed:....
因为你没有指定session文件的存放路径.

解决方法:

(1)在c盘建立文件夹tmp
(2)打开php.ini,找到session.save_path,修改为session.save_path= "c:/tmp"

PHP 相关文章推荐
php代码优化及php相关问题总结
Oct 09 PHP
php设计模式 Bridge (桥接模式)
Jun 26 PHP
PHP读取PDF内容配合Xpdf的使用
Nov 24 PHP
php switch语句多个值匹配同一代码块的实现
Mar 03 PHP
分享常见的几种页面静态化的方法
Jan 08 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
Mar 15 PHP
基于PHP制作验证码
Oct 12 PHP
PHP 文件上传后端处理实用技巧方法
Jan 06 PHP
详解PHP文件的自动加载(autoloading)
Feb 04 PHP
PHP 观察者模式深入理解与应用分析
Sep 25 PHP
ThinkPHP5 框架引入 Go AOP,PHP AOP编程项目详解
May 12 PHP
PHP序列化和反序列化深度剖析实例讲解
Dec 29 PHP
php字符编码转换之gb2312转为utf8
Oct 28 #PHP
使用PHP curl模拟浏览器抓取网站信息
Oct 28 #PHP
php header功能的使用
Oct 28 #PHP
简单实用的.net DataTable导出Execl
Oct 28 #PHP
php json与xml序列化/反序列化
Oct 28 #PHP
php中的boolean(布尔)类型详解
Oct 28 #PHP
php中的比较运算符详解
Oct 28 #PHP
You might like
PHP 多进程 解决难题
2009/06/22 PHP
PHP 编程安全性小结
2010/01/08 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
php验证身份证号码正确性的函数
2016/07/20 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
2014/05/08 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
2017/04/06 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
深入理解Node module模块
2018/03/26 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
如何修改Vue打包后文件的接口地址配置的方法
2020/04/22 Javascript
如何在面试中手写出javascript节流和防抖函数
2020/10/22 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
vue实现标签云效果的示例
2020/11/09 Javascript
javascript 数组(list)添加/删除的实现
2020/12/17 Javascript
Python实现类似jQuery使用中的链式调用的示例
2016/06/16 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
使用Python将Exception异常错误堆栈信息写入日志文件
2020/04/08 Python
python数据类型强制转换实例详解
2020/06/22 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
2020/12/01 Python
探讨HTML5移动开发的几大特性(必看)
2015/12/30 HTML / CSS
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
const char*, char const*, char*const的区别是什么
2014/07/09 面试题
市场开发计划书
2014/05/07 职场文书
客户答谢会致辞
2015/01/20 职场文书
关于长城的导游词
2015/01/30 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
JS代码编译器Monaco使用方法
2021/06/11 Javascript
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android
Python+pyaudio实现音频控制示例详解
2022/07/23 Python