PHP session_start()问题解疑(详细介绍)


Posted in PHP onJuly 05, 2013

本文,将这些问题,做一个简单的汇总,以便大家查阅。
1.
错误提示
Warning: Cannot send session cookie - headers already sent
Warning: Cannot send session cache limiter - headers already sent
分析及解决办法
这一类问题,的原因是你在程序中使用PHP session_start()时,之前已经有实际的html内容输出了。或许你说,我没有啊,我只不过是echo或print一条消息了。很抱歉,你的 echo或print语句所产生的输出,就是实际的html内容输出。解决此类问题的办法是,将你的session_start()调到程序的第一行。

2.
错误提示
Warning: open(F:/689phpsessiondatasess_66a39376b873f4daecf239891edc98b5, O_RDWR) failed
分析及解决方法
出现这样的错误语句一般是因为你的php.ini中关于session.save_path一项没有设置好,解决的方法是将 session.save_path和session.cookie_path 设置置为
session_save_path = c: emp
session.cookie_path = c: emp
然后在c:目录下建立一个temp目录,即可

3.
错误提示
Warning: Trying to destroy uninitialized session in
分析及解决方法
出类这样的提示,一般情况都是你直接调session_destroy()函数造成的。很多的朋友认为session_destroy()函数可以独立的 运行,其实不然。解决的方法是在你调session_destroy()函数之前,要用PHP session_start()开启session的功能。

4.问题:怎么获得当前session的id值呢?
最简单的方法是:
echo SID;
你会发现的。

5.问题:我的程序,在调用header函数之前没有任何的输出,虽然我include了一个config.php文件,但在config.php 文件中也没有任何的输出,为什么session还是会报出与问题1同样的错误呢,是不是因为我在header之前用了PHP session_start()的缘故呢?

答:或许你确实认真的检查了你的php程序,在引用header()之前确实也没有任何的输出,并且在你的include文件中也没有任何的输出! 但是你是否用光标键在?>这个PHP代码结束语句后移动检查呢?那么你会发现在?>这个后面,有一个空行或几个空格,你删除了这几个空行或空 格,那么问题就解决了。
注:此问题,会出PHP4.1.2中,更高版本,没有测试过。

6.问:用session做登录主页面后,其它页面怎么用session限制登录。。。
答:最简单的方法是
    session_start();  
    if(!session_registered
    ('login')
    ││ $login != true) {  
    echo "你没有登陆";  
    exit;  
    }

7.问:我用session_register()注册了session变量,可是当我用header或用javascript的重定向语句,那么 在一下页面中,我却访问不到session所注册的变量值。请问如何解决?
问题的程序片段:
    session_start();  
    $ ok  = 'love you';  
    session_register('ok');  
    header("location : next.php");  
    ?> 
    next.php  
    session_start();  
    echo $ok;  
    ?> 
解决的方法:
当你用header函数或window.location这样的功能后,你上一个页面所注册的session变量,就会容易的丢失,关于这个问题的原因, 至今仍没有一个详细的回答。
不过有解决的方法。如下所示
header("Location: next.php" ."?" . SID);
在跳转到下一页面的时候,将session的当前id做为一个参数,传到后一个页面。

8.session如何传数组
    session_register
    ('data');  
    $ data = array (1,2,3,4);
方法是先注册后赋值

9.问题9:我是不是可以用像$HTTP_GET_VARS['**']方式来访问session值呢?
回答:可以,你可以使用如下global数组来访问session,以加强网页的安全性
$HTTP_SESSION_VARS
$_SESSION
例程:
    session_start();  
    $ username  = 'stangly.
    wrong';  
    session_register('
    username'); 
    echo $HTTP_SESSION_VARS
    ['username'];  
    echo ' 
    ';  
    echo $_SESSION
    ['username'];  
    ?>   
请参照此例程修改符合您自己的程序。

问题10:session_unregister() 和 session_destroy() 有何区别?
session_unregister()函数主要作用是注消当前的一sion.(译自于php.net)
例程:
    if(isset($_COOKIE[session_name()])) {  
    session_start();  
    session_destroy();  
    unset($_COOKIE[session_name()]);  
    }
以上,所述是一些新手经常遇到的PHP session_start()问题。或许是详述不清,难免有误所在,请高手指点批评。

PHP 相关文章推荐
用php写的serv-u的web申请账号的程序
Oct 09 PHP
Http 1.1 Etag 与 Last-Modified提高php效率
Jan 10 PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
Aug 14 PHP
PHP按行读取文件时删除换行符的3种方法
May 04 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 PHP
PHP调试函数和日志记录函数分享
Jan 31 PHP
PHP操作mysql数据库分表的方法
Jun 09 PHP
php连接微软MSSQL(sql server)完全攻略
Nov 27 PHP
解析 thinkphp 框架中的部分方法
May 07 PHP
tp5修改(实现即点即改)
Oct 18 PHP
PHP pthreads v3使用中的一些坑和注意点分析
Feb 21 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
Jul 05 #PHP
PHP仿博客园 个人博客(2) 数据库增添改删
Jul 05 #PHP
浅析PHP的ASCII码转换类
Jul 05 #PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
Jul 05 #PHP
PHP cdata 处理(详细介绍)
Jul 05 #PHP
PHP的基本常识小结
Jul 05 #PHP
深入解析fsockopen与pfsockopen的区别
Jul 05 #PHP
You might like
JS中剪贴板兼容性、判断复制成功或失败
2021/03/09 Javascript
Tab页界面 用jQuery及Ajax技术实现(php后台)
2011/10/12 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
使用jQuery将多条数据插入模态框的实现代码
2014/10/08 Javascript
director.js实现前端路由使用实例
2015/02/03 Javascript
AngularJS 表达式详细讲解及实例代码
2016/07/26 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
2016/10/08 Javascript
JavaScrpt判断一个数是否是质数的实例代码
2017/06/11 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
2018/01/10 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
2018/08/09 jQuery
vue-router之nuxt动态路由设置的两种方法小结
2018/09/26 Javascript
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
vue页面引入three.js实现3d动画场景操作
2020/08/10 Javascript
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
python编程实现12306的一个小爬虫实例
2017/12/27 Python
Python中创建二维数组
2018/10/17 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
Django 表单模型选择框如何使用分组
2019/05/16 Python
python+opencv实现移动侦测(帧差法)
2020/03/20 Python
python 星号(*)的多种用途
2020/09/21 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
Manuka Doctor美国官网:麦卢卡蜂蜜和蜂毒护肤
2016/12/25 全球购物
EJB timer的种类
2014/10/28 面试题
智能电子应届生求职信
2013/11/10 职场文书
个人思想理论学习的自我鉴定
2013/11/30 职场文书
商场经理竞聘演讲稿
2014/01/01 职场文书
心得体会开头
2014/01/01 职场文书
信息员培训方案
2014/06/12 职场文书
《文化苦旅》读后感:阅读,让人诗意地栖居在大地上
2019/12/24 职场文书
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL
k8s部署redis cluster集群的实现
2021/06/24 Redis