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: 分析及解决方法 出现这样的错误语句一般是因为你的 javascript:;?>javascript:;" 'php');return false;">php.ini 中关于 session.save_path 一项没有设置好,解决的方法是将 session.save_path 和 session.cookie_path 设置 置为 session_save_path = session.cookie_path = 然后在 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 变量。不