|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
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_name()])) {
session_start();
session_destroy();
unset($_COOKIE[session_name()]);
}
以上,所述是一些老手常常碰到的成绩。也许是胪陈不清,不免有误地点,请高手指导品评。看到好的帖子最好up一下,以使得更多的人得到分享。 |
|