教你如何使用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 模拟get_headers函数的代码示例
Apr 27 PHP
修改php.ini以达到屏蔽错误信息并记录日志
Jun 16 PHP
php操作xml入门之xml基本介绍及xml标签元素
Jan 23 PHP
PHP中创建和验证哈希的简单方法实探
Jul 06 PHP
64位windows系统下安装Memcache缓存
Dec 06 PHP
PHP的反射机制实例详解
Mar 29 PHP
PHP中模糊查询并关联三个select框
Jun 19 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
PHP中递归的实现实例详解
Nov 14 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
May 20 PHP
PHP二维索引数组的遍历实例分析【2种方式】
Jun 24 PHP
如何在Laravel5.8中正确地应用Repository设计模式
Nov 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
写一个用户在线显示的程序
2006/10/09 PHP
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
5 cool javascript apps
2007/03/24 Javascript
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
2015/04/25 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中的rfind()方法使用详解
2015/05/19 Python
python实现SMTP邮件发送功能
2020/06/16 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
详解Django3中直接添加Websockets方式
2020/02/12 Python
英国领先的运动物理治疗供应公司:Vivomed
2018/07/14 全球购物
navabi英国:设计师大码女装
2019/06/25 全球购物
JAVA中运算符的分类及举例
2015/09/12 面试题
社区健康教育实施方案
2014/03/18 职场文书
补充协议书范本
2014/04/23 职场文书
2016年六一文艺汇演开幕词
2016/03/04 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
Python中22个万用公式的小结
2021/07/21 Python
Python实现学生管理系统并生成exe可执行文件详解流程
2022/01/22 Python