Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18925697
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类:

2008-04-14 17:07:45

1.
L:o y\JV `0   错误提示 PHPChina 开源社区门户.q.T0eS6k"Jg ^0s8@
   Warning: Cannot send session cookie - headers already sent
4~d)M+~$q4}@A RJ0   Warning: Cannot send session cache limiter - headers already sent PHPChina 开源社区门户,P NH*P,K%?
   分析及解决办法
!_Y9OPrL0   这一类问题,的原因是你在程序中使用session_start()时,之前已经有实际的html内容输出了。或许你说,我没有啊,我只不过是echo或print一条消息了。很抱歉,你的echo或print语句所产生的输出,就是实际的html内容输出。解决此类问题的办法是,将你的session_start()调到程序的第一行。 PHPChina 开源社区门户Qm ?)M @,sA[0O;|
     PHPChina 开源社区门户GCE:_&H4~VGb/E X
   2.
B!@ L D(Q3b6|0   错误提示 PHPChina 开源社区门户 Pi[&p1B'^6g
   Warning: open(F:/689\php\sessiondata\sess_66a39376b873f4daecf239891edc98b5, O_RDWR) failed
#l ~A6a8L$K'Q d0   分析及解决方法
}+\7QP b$UNX;r8z^0   出现这样的错误语句一般是因为你的:;?>javascript:;" onClick="tagshow(event, 'php');return false;">php.ini中关于session.save_path一项没有设置好,解决的方法是将session.save_path和session.cookie_path 设置置为
| FaIDn,X0   session_save_path = c:\temp PHPChina 开源社区门户s8n&OWY*| D
   session.cookie_path = c:\temp PHPChina 开源社区门户w(eB:zcnR4P
   然后在c:\目录下建立一个temp目录,即可 PHPChina 开源社区门户Wc0A7^A i Y
     PHPChina 开源社区门户`0y oEL~q
   3. PHPChina 开源社区门户 i.[r TG[#h;l;FB
   错误提示
#in'f `5qI?0   Warning: Trying to destroy uninitialized session in PHPChina 开源社区门户b?3Eoh|
   分析及解决方法 PHPChina 开源社区门户R,L)]-hN
   出类这样的提示,一般情况都是你直接调session_destroy()函数造成的。很多的朋友认为session_destroy()函数可以独立的运行,其实不然。解决的方法是在你调session_destroy()函数之前,要用session_start()开启session的功能。
/@CNtjuFDD-B.\-R0     PHPChina 开源社区门户 ?"|Qu5d/v
   4.问题:怎么获得当前session的id值呢? PHPChina 开源社区门户0H8AE*f#bN
   最简单的方法是: PHPChina 开源社区门户@+Y5S i_
   echo SID;
$J(Sqx7P%V8S,A9F?O0   你会发现的。 PHPChina 开源社区门户"B+vm-Y!N WK"Q
    
2MRV\R(|0   5.问题:我的程序,在调用header函数之前没有任何的输出,虽然我include了一个config.php文件,但在config.php文件中也没有任何的输出,为什么session还是会报出与问题1同样的错误呢,是不是因为我在header之前用了session_start()的缘故呢?
/BZr#T%^j2nj;sR^0   答:或许你确实认真的检查了你的php程序,在引用header()之前确实也没有任何的输出,并且在你的include文件中也没有任何的输出!但是你是否用光标键在?>这个PHP代码结束语句后移动检查呢?那么你会发现在?>这个后面,有一个空行或几个空格,你删除了这几个空行或空格,那么问题就解决了。
c(A~ `:fEzlF2tl&R0   注:此问题,会出PHP4.1.2中,更高版本,没有过。
%V.?J'Jk0     PHPChina 开源社区门户`M{~Qn8}
   6.问:用session做登录主页面后,其它页面怎么用session限制登录。。。 PHPChina 开源社区门户3g4w*[%Z*A3`f4z%ZBG S
   答:最简单的方法是 PHPChina 开源社区门户.F:p%W+I']j/b y
   session_start(); PHPChina 开源社区门户,cq}cR{
   if(!session_registered(\'login\') ││ $login != true) { PHPChina 开源社区门户,Vq%z9sb9n T(S_&S
   echo \"你没有登陆\";
K4V0R%A1@0   exit;
a9B3wx YQI0   }
+i,fw h0EF9uF0    
B#Q m#?5HD0   7.问:我用session_register()注册了session变量,可是当我用header或用javascript的重定向语句,那么在一下页面中,我却访问不到session所注册的变量值。请问如何解决? PHPChina 开源社区门户:Jre9R9Y \"P m
   问题的程序片段: PHPChina 开源社区门户C+?@8q;] i8^1s7M
       session_start(); PHPChina 开源社区门户#K'\k!?r
   $ok = \'love you\';
(rk]-pOd Z{1r}0   session_register(\'ok\'); PHPChina 开源社区门户*Z?l)}&F'`7CJ%E
   header(\"location : next.php\");
.p~ m@f+aB)k0   ?>
_7gS"Z"Q0    
(DQh @"F"t9m"H3b0   next.php
;r!b'^:]Drk(g%E0       session_start(); PHPChina 开源社区门户6wh/F'S J v5P
   echo $ok; PHPChina 开源社区门户-Z kUB)[Nc
   ?> PHPChina 开源社区门户+m9i9O^ uw
     PHPChina 开源社区门户GXi1P0M:t i5{8j4?g
   解决的方法: PHPChina 开源社区门户8F])d;r|)o
   当你用header函数或window.location这样的功能后,你上一个页面所注册的session变量,就会容易的丢失,关于这个问题的原因,至今仍没有一个详细的回答。
O]-y }mh0   不过有解决的方法。如下所示 PHPChina 开源社区门户? ]Y4ki$yi
   header(\"Location: next.php\" .\"?\" . SID); PHPChina 开源社区门户z#X3T~ e7A
   在跳转到下一页面的时候,将session的当前id做为一个参数,传到后一个页面。 PHPChina 开源社区门户7}~l*Fo g!{.k
     PHPChina 开源社区门户 oX nPW p]
   8.session如何传数组 PHPChina 开源社区门户&Lrg7k lt
   session_register(\'data\'); PHPChina 开源社区门户)B|1m0\"ukl
   $data=array(1,2,3,4);
5~X*w~9F$H9Jx0    
]J\ s$Z*MbF0   方法是先注册后赋值 PHPChina 开源社区门户7u Y+D CPYig
    
l+}O5~ kk0   9.问题9:我是不是可以用像$HTTP_GET_VARS[\'**\']方式来访问session值呢?
'r:B4O TL0Zju&C"Q0     PHPChina 开源社区门户I(L;g C&d;F
   回答:可以,你可以使用如下global数组来访问session,以加强网页的安全性
)_;A%m:b0c$E @KY0   $HTTP_SESSION_VARS
!M%O xp.nZqP(cR0   $_SESSION
CyeZ M4s{Z9_0   例程:
|T-t:w/lXh9E0       session_start();
"kUw5NF+L:z0   $username = \'stangly.wrong\'; PHPChina 开源社区门户,P4wf[\3X m9c)hD7r F
   session_register(\'username\');
(N7_ ? H F@ C)Cb0     PHPChina 开源社区门户'F'g$t` x(r
   echo $HTTP_SESSION_VARS[\'username\'];
9QASO*X0YF0{0   echo \' PHPChina 开源社区门户s8{0v$i~ yW%c2\+E
   \'; PHPChina 开源社区门户U(xm7Z w(A"p!Q!S8v
   echo $_SESSION[\'username\']; PHPChina 开源社区门户-_-y+]0e#U aE"q {\
   ?>
!}o$h{db0   请参照此例程修改符合您自己的程序。 PHPChina 开源社区门户&_Fb G Y,h-I1RGL(w
    
;Zc k{t t0   问题10:session_unregister() 和 session_destroy() 有何区别?
.IHxX}8}}0   session_unregister()函数主要作用是注消当前的一个session变量。不过要注意的是,如果你用$HTTP_SESSION_VARS或$_SESSION在当前页面中引用过session变量,那么你可能需要和unset()配合 来注消session变量。 PHPChina 开源社区门户%U/C"LuNON
   而session_destroy()是清除当前的session环境。意思就是说,当你用session_destroy()函数后,那么你就不可能再用session_is_registered()来检测session的变量了。但是需要注意的是他不能清除global中的session或使用了session cookie的中的session.所以在用session_destroy之前,最好不要用$HTTP_SESSION_VARS $_SESSION来访问session.(译自于php.net) PHPChina 开源社区门户0TM"u!f3gG
     PHPChina 开源社区门户 PN iiX;[Q
   例程: PHPChina 开源社区门户-^W8WAbr
   if(isset($_COOKIE[session_name()])) { PHPChina 开源社区门户.QL,U.zsr$}
   session_start();
E#W*` g q;`&l+f0   session_destroy();
2MiU5\{5z0   unset($_COOKIE[session_name()]);
Va!T`Kx q*x#kE G0   } 
8Hk#i1qe%_0

阅读(326) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~