教你如何使用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 相关文章推荐
PHP5中使用PDO连接数据库的方法
Aug 01 PHP
PHP中fwrite与file_put_contents性能测试代码
Aug 02 PHP
php实现文件编码批量转换
Mar 10 PHP
PHP获取windows登录用户名的方法
Jun 24 PHP
PHP中常用的字符串格式化函数总结
Nov 19 PHP
PHP实现无限级分类(不使用递归)
Oct 22 PHP
浅谈PHP eval()函数定义和用法
Jun 21 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
Sep 22 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
Dec 08 PHP
Yii2.0实现的批量更新及批量插入功能示例
Jan 29 PHP
解决在laravel中auth建立时候遇到的问题
Oct 15 PHP
PHP实现微信提现功能(微信商城)
Nov 21 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
main.php
2006/12/09 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
JSON 数据详解及实例代码分析
2017/01/20 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
详解react阻止无效重渲染的多种方式
2018/12/11 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
2019/02/25 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
简单介绍Python中的decode()方法的使用
2015/05/18 Python
在Lighttpd服务器中运行Django应用的方法
2015/07/22 Python
5种Python单例模式的实现方式
2016/01/14 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
TensorFlow命名空间和TensorBoard图节点实例
2020/01/23 Python
基于Python把网站域名解析成ip地址
2020/05/25 Python
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
EJB3.1都有哪些改进
2012/11/17 面试题
超市客服工作职责
2014/06/11 职场文书
水利水电建筑施工应届生求职信
2014/07/04 职场文书
办公室班子四风问题对照检查材料
2014/10/04 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书
获奖感言怎么写
2015/07/31 职场文书
小学英语教学随笔
2015/08/14 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
Python实现简繁体转换
2021/06/07 Python
Java基于字符界面的简易收银台
2021/06/26 Java/Android