PHP的session功能对于很多初学者来说一直是比较难的。即使是一些老手,有时也会感到困惑。本文就这些问题进行简要总结,供大家参考。
1.错误提示:
分析和解决方案
之所以会出现这种问题,是因为在程序中使用session_start()时,之前已经有实际的html内容输出了。也许你会说,我不是,我只是一个回声或印刷信息。我很抱歉,
由echo或print语句生成的输出是实际的html内容输出。这类问题的解决方法是把你的session_start()转移到程序的第一行。
2.错误提示
分析和解决方案:
一般来说,出现这样的错误语句是因为php.ini中关于session.save_path的项设置得不好。解决方法是将session.save_path和session.cookie_path的设置设置为。
然后在c:\目录下创建一个临时目录。
3.错误提示
分析和解决方案通常由您直接调用session_destroy()函数来提示。很多朋友以为session_destroy()函数可以独立运行,其实不然。
解决方法是在调用session_destroy()函数之前,先用session_start()打开session函数。
4.问:如何获取当前会话的id值?
最简单的方法是:
5.问题:
我的程序在调用header函数之前没有任何输出。尽管我包含了一个config.php文件,但是在config.php文件中没有输出。
为什么会话仍然报告与问题1相同的错误?是因为我在头之前用了session_start()吗?
答:可能你确实仔细检查了你的php程序,在你引用header()之前真的没有输出。
并且在你的包含文件中没有输出!但是你用光标键吗?PHP代码结束语句后的移动检查怎么办?所以你会发现?在这之后,有一个空行或几个空格。如果你删除这些空行或空格,问题就解决了。
注意:这个问题会出现在PHP4.1.2,更高的版本,没有测试过。
6.问:使用session作为登录主页后,其他页面如何使用session限制登录?
最简单的方法是
7.问:我用session_register()注册了session变量,但是在使用header或者javascript重定向语句时,在下一页无法访问session注册的变量值。
怎么解决?
问题的程序片段:
next.php
解决方案:
当您使用header或window.location函数时,您最后一页上注册的session变量将很容易丢失。这个问题还是没有详细的答案。
但是有一个解决方案。如下
跳转到下一页时,使用会话的当前id作为参数,并将其传递到下一页。
8.会话如何传递数组?
方法是先注册,再赋值。
9.我能以类似$HTTP_GET_VARS['**']的方式访问会话值吗?
答:可以,可以使用下面的全局数组访问会话,增强网页的安全性。
常规: