教你如何使用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 相关文章推荐
Adodb的十个实例(清晰版)
Dec 31 PHP
收集的DedeCMS一些使用经验
Mar 17 PHP
Phpbean路由转发的php代码
Jan 10 PHP
php中var_export与var_dump的区别分析
Aug 21 PHP
PHP 基于Yii框架中使用smarty模板的方法详解
Jun 13 PHP
php stream_get_meta_data返回值
Sep 29 PHP
JavaScript实现滚动栏效果的方法
Apr 27 PHP
PHP创建PowerPoint2007文档的方法
Dec 10 PHP
php使用fullcalendar日历插件详解
Mar 06 PHP
在Laravel的Model层做数据缓存的实现
Sep 26 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 02 PHP
Linux系统下安装PHP7.3版本
Jun 26 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面向对象分析设计的61条军规小结
2010/07/17 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
php通过sort()函数给数组排序的方法
2015/03/18 PHP
javascript实现的在当前窗口中漂浮框的代码
2010/03/15 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
2016/07/01 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
bootstrap fileinput插件实现预览上传照片功能
2018/01/23 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
2019/09/10 Javascript
js中offset,client , scroll 三大元素知识点总结
2019/09/11 Javascript
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
Python中的rjust()方法使用详解
2015/05/19 Python
python计算一个序列的平均值的方法
2015/07/11 Python
Python的净值数据接口调用示例分享
2016/03/15 Python
python实现的AES双向对称加密解密与用法分析
2017/05/02 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
Python Flask基础教程示例代码
2018/02/07 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
python selenium 获取标签的属性值、内容、状态方法
2018/06/22 Python
Django框架的中的setting.py文件说明详解
2018/10/15 Python
详解python解压压缩包的五种方法
2019/07/05 Python
python实现机器人卡牌
2019/10/06 Python
python3爬取torrent种子链接实例
2020/01/16 Python
HTML5拖拽文件上传的示例代码
2021/03/04 HTML / CSS
C# .NET面试题
2015/11/28 面试题
JSP&Servlet技术面试题
2015/05/21 面试题
关于运动会的口号
2014/06/07 职场文书
集团财务总监岗位职责
2015/04/03 职场文书