教你如何使用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访问查询mysql数据的三种方法
Oct 09 PHP
利用递归把多维数组转为一维数组的函数
Oct 09 PHP
Excel数据导入Mysql数据库的实现代码
Jun 05 PHP
用Simple Excel导出xls实现方法
Dec 06 PHP
两款万能的php分页类
Nov 12 PHP
PHP图片添加水印功能示例小结
Oct 03 PHP
yii2.0整合阿里云oss的示例代码
Sep 19 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
Apr 24 PHP
Laravel事件监听器用法实例分析
Mar 12 PHP
PHP常量define和const的区别详解
May 18 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
Oct 21 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 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开发中常用的8个小技巧
2008/08/27 PHP
php在程序中将网页生成word文档并提供下载的代码
2012/10/09 PHP
PHP 获取 ping 时间的实现方法
2017/09/29 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
javascript时区函数介绍
2012/09/14 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
jQuery中table数据的值拷贝和拆分
2017/03/19 Javascript
微信小程序request请求后台接口php的实例详解
2017/09/20 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
vue-cli扩展多模块打包的示例代码
2018/04/09 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
javascript获取select值的方法完整实例
2019/06/20 Javascript
python cookielib 登录人人网的实现代码
2012/12/19 Python
详细解读Python的web.py框架下的application.py模块
2015/05/02 Python
Python使用gensim计算文档相似性
2016/04/10 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
2020/02/27 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
日本最大的购物网站:日本乐天市场(Rakuten Ichiba)
2020/11/04 全球购物
小学教师的个人自我鉴定
2013/10/24 职场文书
12岁生日感言
2014/01/21 职场文书
房产买卖委托公证书
2014/04/04 职场文书
病媒生物防治方案
2014/05/13 职场文书
学校查摆问题整改措施
2014/09/28 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
六一儿童节开幕词
2015/01/29 职场文书
资料员岗位职责范本
2015/04/13 职场文书
解放思想大讨论活动总结
2015/05/09 职场文书