教你如何使用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操作MongoDB时的整数问题及对策说明
May 02 PHP
PHP查询MySQL大量数据的时候内存占用分析
Jul 22 PHP
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
Jun 07 PHP
php后台如何避免用户直接进入方法实例
Oct 15 PHP
php根据指定位置和长度获得子字符串的方法
Mar 17 PHP
php判断用户是否手机访问代码
Jun 08 PHP
php正则表达式学习笔记
Nov 13 PHP
PHP链表操作简单示例
Oct 15 PHP
PHP实现类似题库抽题效果
Aug 16 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
Sep 28 PHP
PHP常见加密函数用法示例【crypt与md5】
Jan 27 PHP
PHP PDOStatement::nextRowset讲解
Feb 01 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下正则来匹配dede模板标签的代码
2010/08/21 PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
2014/07/18 PHP
php 实现一个字符串加密解密的函数实例代码
2016/11/01 PHP
javascript document.referrer 用法
2009/04/30 Javascript
js中匿名函数的N种写法
2010/09/08 Javascript
javascript模版引擎-tmpl的bug修复与性能优化分析
2011/10/23 Javascript
分页栏的web标准实现
2011/11/01 Javascript
jquery ajax 同步异步的执行 return值不能取得的解决方案
2012/01/08 Javascript
jQuery插件Tmpl的简单使用方法
2015/04/27 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
jquery实现简单实用的弹出层效果代码
2015/10/15 Javascript
基于JavaScript代码实现随机漂浮图片广告
2016/01/05 Javascript
精通JavaScript的this关键字
2020/05/28 Javascript
微信小程序之小豆瓣图书实例
2016/11/30 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
2017/06/13 Javascript
详解js静态资源文件请求的处理
2017/08/01 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
python生成指定长度的随机数密码
2014/01/23 Python
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
如何将python中的List转化成dictionary
2016/08/15 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
python对输出的奇数偶数排序实例代码
2020/12/04 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
财务会计专业推荐信
2013/11/30 职场文书
幼儿园英语教学反思
2014/01/30 职场文书
学习十八届三中全会精神实施方案
2014/02/17 职场文书
请假条怎么写
2014/04/10 职场文书
买房协议书范本
2014/10/23 职场文书
立项申请报告范本
2015/05/15 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书