PHP网站制作之PHP关于session的成绩集锦处理计划
php manual(PHP手册)肯定是要从网上下载一个的,它很权威,也很全面,我自己认为它是一本很好的参考书,但是不适合新手当教材使用。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:/689\php\sessiondata\sess_66a39376b873f4daecf239891edc98b5, O_RDWR) failed
剖析及处理办法
呈现如许的毛病语句通常为由于你的php.ini中关于session.save_path一项没有设置好,处理的办法是将session.save_path和session.cookie_path 设置置为
session_save_path = c:\temp
session.cookie_path = c:\temp
然后在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代码停止语句后挪动反省呢?那末你会发明在?>这个前面,有一个空行或几个空格,你删除这几个空行或空格,那末成绩就处理了。
注:此成绩,会出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()函数次要感化是注消以后的一个session变量。不外要注重的是,假如你用$HTTP_SESSION_VARS或$_SESSION在以后页面中援用过session变量,那末你能够需求和unset()共同 来注消session变量。
而session_destroy()是排除以后的session情况。意思就是说,当你用session_destroy()函数后,那末你就不成能再用session_is_registered()来检测session的变量了。然而需求注重的是他不克不及排除global中的session或利用了session cookie的中的session.所以在用session_destroy之前,最好不要用$HTTP_SESSION_VARS $_SESSION来会见session.(译自于php.net)
例程:
if(isset($_COOKIE)) {
session_start();
session_destroy();
unset($_COOKIE);
}
以上,所述是一些老手常常碰到的成绩。也许是胪陈不清,不免有误地点,请高手指导品评。看到好的帖子最好up一下,以使得更多的人得到分享。 你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。 有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。 当然这种网站的会员费就几十块钱。 写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。 本文当是我的笔记啦,遇到的问题随时填充 真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎, 微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。 php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会) 刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。 说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。 真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎, 说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。 遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。 对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。 在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。 最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。 说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。 对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。 兴趣是最好的老师,百度是最好的词典。
页:
[1]
2