教你如何使用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桌面中心(四) 数据显示
Mar 11 PHP
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
Dec 06 PHP
php GeoIP的使用教程
Mar 09 PHP
深入php-fpm的两种进程管理模式详解
Jun 03 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
PHP向浏览器输出内容的4个函数总结
Nov 17 PHP
php计算两个文件相对路径的方法
Mar 14 PHP
php计算税后工资的方法
Jul 28 PHP
php  单例模式详细介绍及实现源码
Nov 05 PHP
Laravel框架文件上传功能实现方法示例
Apr 16 PHP
laravel5.5添加echarts实现画图功能的方法
Oct 09 PHP
php判断数组是否为空的实例方法
May 10 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
VFP与其他应用程序的集成
2006/10/09 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
PHP实现更新中间关联表数据的两种方法
2014/09/01 PHP
php获取一个变量的名字的方法
2014/09/05 PHP
php判断访问IP的方法
2015/06/19 PHP
PHP ob缓存以及ob函数原理实例解析
2020/11/13 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
发一个自己用JS写的实用看图工具实现代码
2008/07/26 Javascript
ASP 过滤数组重复数据函数(加强版)
2010/05/31 Javascript
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
原生javascript实现图片弹窗交互效果
2015/01/12 Javascript
javascript从作用域链谈闭包
2020/07/29 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
浅谈React高阶组件
2018/03/28 Javascript
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
python快速查找算法应用实例
2014/09/26 Python
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
python删除列表内容
2015/08/04 Python
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
Django基础知识 web框架的本质详解
2019/07/18 Python
用Python调用win命令行提高工作效率的实例
2019/08/14 Python
python selenium实现发送带附件的邮件代码实例
2019/12/10 Python
python烟花效果的代码实例
2020/02/25 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
pycharm实现猜数游戏
2020/12/07 Python
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
html5拍照功能实现代码(htm5上传文件)
2013/12/11 HTML / CSS
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
Jimmy Choo美国官网:周仰杰鞋子品牌
2018/06/08 全球购物
机械系大学毕业生推荐信
2013/11/27 职场文书
个人求职信范例
2014/01/29 职场文书
法律意见书范文
2015/06/04 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书