教你如何使用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中文URL编解码(urlencode()rawurlencode()
Jul 03 PHP
PHP学习笔记之二
Jan 17 PHP
ecshop 批量上传(加入自定义属性)
Mar 20 PHP
PHP获取MAC地址的具体实例
Dec 13 PHP
PHP对象相互引用的内存溢出实例分析
Aug 28 PHP
php学习笔记之面向对象
Nov 08 PHP
thinkphp连贯操作实例分析
Nov 22 PHP
php使用curl通过代理获取数据的实现方法
May 16 PHP
php版微信小店调用api示例代码
Nov 12 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
May 31 PHP
详解no input file specified 三种解决方法
Nov 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
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
php实现简单文件下载的方法
2015/01/30 PHP
以文件形式缓存php变量的方法
2015/06/26 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
PHP 7.0新增加的特性介绍
2017/06/08 PHP
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
2010/06/18 Javascript
加速IE的Javascript document输出的方法
2010/12/02 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
在vue-cli脚手架中配置一个vue-router前端路由
2017/07/03 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
js判断输入框不能为空格或null值的实现方法
2018/03/02 Javascript
浅谈mvvm-simple双向绑定简单实现
2018/04/18 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
layui写后台表格思路和赋值用法详解
2019/11/14 Javascript
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
从0开始的Python学习016异常
2019/04/08 Python
Django model update的多种用法介绍
2020/03/28 Python
python yield和Generator函数用法详解
2020/02/10 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
Mac PyCharm中的.gitignore 安装设置教程
2020/04/16 Python
Pycharm修改python路径过程图解
2020/05/22 Python
详解python的变量缓存机制
2021/01/24 Python
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
HTML5自定义视频播放器源码
2020/01/06 HTML / CSS
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
机电一体化毕业生求职信
2013/11/02 职场文书
前台文员我鉴定
2014/01/12 职场文书
2014党员学习《反腐倡廉警示教育读本》思想汇报
2014/09/13 职场文书
自习课吵闹检讨书范文
2014/09/26 职场文书
撤诉状格式范本
2015/05/19 职场文书
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL