教你如何使用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调用Java对象的方法
Oct 09 PHP
一个查看session内容的函数
Oct 09 PHP
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
Jan 10 PHP
逐步提升php框架的性能
Jan 10 PHP
防止MySQL注入或HTML表单滥用的PHP程序
Jan 21 PHP
Ping服务的php实现方法,让网站快速被收录
Feb 04 PHP
php数组操作之键名比较与差集、交集赋值的方法
Nov 10 PHP
thinkphp中空模板与空模块的用法实例
Nov 26 PHP
PHP中的print_r 与 var_dump 输出数组
Jun 13 PHP
使用YII2框架实现微信公众号中表单提交功能
Sep 04 PHP
PHP使用PDO实现mysql防注入功能详解
Dec 20 PHP
详解PHP服务器如何在有限的资源里最大提升并发能力
May 25 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实现网上点歌(二)
2006/10/09 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
PHP查询大量数据内存耗尽问题的解决方法
2016/10/28 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
详解php用static方法的原因
2018/09/12 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
关于__defineGetter__ 和__defineSetter__的说明
2007/05/12 Javascript
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
js倒计时小程序
2013/11/05 Javascript
详解jquery uploadify 上传文件
2013/11/09 Javascript
JS获取节点的兄弟,父级,子级元素的方法
2014/01/09 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
2016/06/07 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
全屏滚动插件fullPage.js使用实例解析
2016/10/21 Javascript
解决vue 打包发布去#和页面空白的问题
2018/09/04 Javascript
vue单页应用在页面刷新时保留状态数据的方法
2018/09/21 Javascript
iview实现select tree树形下拉框的示例代码
2018/12/21 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
js实现缓动动画
2020/11/25 Javascript
Python 连连看连接算法
2008/11/22 Python
python修改操作系统时间的方法
2015/05/18 Python
python requests.post带head和body的实例
2019/01/02 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
解决pytorch 模型复制的一些问题
2021/03/03 Python
Expedia马来西亚旅游网站:廉价酒店,度假村和航班预订
2016/07/26 全球购物
个人找工作的自我评价
2013/10/17 职场文书
法律进学校实施方案
2014/03/15 职场文书
班级体育活动总结
2014/07/05 职场文书
医德医魂心得体会
2014/09/11 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js