您好,欢迎访问一九零五行业门户网

php为什么用$_SESSION会出错?解决思路

php为什么用$_session会出错?
//session1.php:
//session2.php
打开session1.php,输出
------------------------------------
欢迎:第一页
cookie中myword值是:我是张三
下一页
------------------------------------
点击“下一页”打开session2.php输出
------------------------------------
欢迎:第二页
notice: undefined index: myword in r:\program files\appserv\www\session\session2.php on line 5
姓名:
notice: undefined index: myage in r:\program files\appserv\www\session\session2.php on line 6
年龄:
notice: undefined index: mysex in r:\program files\appserv\www\session\session2.php on line 7
性别:
下一页
------------------------------------
是不是配置的问题? 我的php.ini的session配置如下:
session.save_handler = files
session.save_path = r:/program files/appserv/php5/session_tmp
; session.save_path = n;mode;/path
session.save_path = r:/program files/appserv/php5/session_tmp
(有三个session.save_path)
session.cookie_domain = cookies
(其他的就不一一列出了)
------解决方案--------------------
session.cookie_domain = 
修改为这样或者注释掉,然后重启服务器
我估计这种情况是没读取到cookie phpsessid导致的,你可以用print_r($_cookie) 来看看有没有phpsessid
------解决方案--------------------
见#1楼,session.cookie_domain不要乱设置,该怎么设置自己搜.你本地测试绑定域名做什么。
------解决方案--------------------
发个session问题总结:
对于php的session功能,始终找不到合适的答案,尤其是一些错误,还有一些没有错误的结果,最可怕的就是后者,一直为许多的初学者为难。就连有些老手,有时都被搞得莫名其妙。本文,将这些问题,做一个简单的汇总,以便大家查阅。
1. 
错误提示 
warning: cannot send session cookie - headers already sent 
warning: cannot send session cache limiter - headers already sent 
分析及解决办法 
这一类问题,的原因是你在程序中使用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()函数之前,要用session_start()开启session的功能。
4.问题:怎么获得当前session的id值呢? 
最简单的方法是: 
echo sid; 
你会发现的。
5.问题:我的程序,在调用header函数之前没有任何的输出,虽然我include了一个config.php文件,但在config.php文件中也没有任何的输出,为什么session还是会报出与问题1同样的错误呢,是不是因为我在header之前用了session_start()的缘故呢? 
答:或许你确实认真的检查了你的php程序,在引用header()之前确实也没有任何的输出,并且在你的include文件中也没有任何的输出!但是你是否用光标键在?>这个php代码结束语句后移动检查呢?那么你会发现在?>这个后面,有一个空行或几个空格,你删除了这几个空行或空格,那么问题就解决了。
其它类似信息

推荐信息