仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3218|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网站制作之PHP关于session的成绩集锦处理计划

[复制链接]
山那边是海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-16 00:24:38 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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一下,以使得更多的人得到分享。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-12 21:08

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表