免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1553 | 回复: 5
打印 上一主题 下一主题

session问题,更奇怪的问题啊 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-12-06 19:53 |只看该作者 |倒序浏览
我服务器(win2k)上这个设置已经设好register_globals = On,然后我写了两个PHP文件,如下:

eg1.php

  1. <?
  2. session_start();
  3. session_register("barney");

  4. $barney = "A big purple dinosaur.";

  5. header("Location: ./eg2.php");

  6. ?>;
复制代码

eg2.php

  1. <?
  2. session_start();
  3. echo $barney;
  4. ?>;
复制代码


结果呢,进入eg1.php转到eg2.php的时候,并不会输出变量$barney的值,而且在session临时文件夹里已经产生了两个session文件,一个是空的,另一个有变量的值;如果这是时返回eg1.php后重新执行,那么eg2.php就可以输出$barney的值了,太奇怪了。

而我在自己用的PC(winxp)里测试又没有这个问题,第一次执行就可以输出变量的值,

到底服务器上出什么问题啦,哪位朋友知道啊?

如果eg1.php的
  1. header("Location: ./eg2.php");
复制代码
改成
  1. echo "<script language='javascript'>;window.location='eg2.php';</script>;";
复制代码
,那么eg2.php也可以直接输出$barney的值。

论坛徽章:
0
2 [报告]
发表于 2004-12-06 20:41 |只看该作者

session问题,更奇怪的问题啊

我刚在另一台win2k adv server上也试过了,结果一样,用header("Location "导向另一个页面还是拿不到session变量的值,难到这是PHP在win2k下的BUG吗

论坛徽章:
0
3 [报告]
发表于 2004-12-06 21:59 |只看该作者

session问题,更奇怪的问题啊

win2k上用php怪事多着呢,最好不要在这个平台上开发,做服务就更不提倡了。。。

论坛徽章:
0
4 [报告]
发表于 2004-12-07 14:56 |只看该作者

session问题,更奇怪的问题啊

查过很多资料后,终于知道这是一个普遍存在的问题,
   
   当用header函数或window.location这样的功能后,上一个页面所注册的session变量将产生两个session临时文件(在win2k adv),一个是OK的,另一个是空白,没有任何值,然而下一个页面就使用了这个没有值的session文件,所以会出现我上述的问题,
   不过有解决的方法。如下所示
  
  1. header("Location: eg2.php?".SID);
复制代码

   在跳转到下一页面的时候,将session的当前id做为一个参数,传到后一个页面。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2004-12-07 15:18 |只看该作者

session问题,更奇怪的问题啊

我觉得是你的环境问题,我做了两个测试页面,和我预期的一样在运行

  1. <?php
  2. // 1.php
  3. session_start();

  4. $_SESSION['testsess'] = 'test';

  5. header('Location: 2.php');
  6. ?>;
复制代码

  1. <?php
  2. // 2.php
  3. session_start();

  4. echo $_SESSION['testsess'];
  5. ?>;
复制代码


然后我用telnet请求1.php,如下:
cat@DCUnit3:cat$ telnet 192.168.221.150 80
Trying 192.168.221.150...
Connected to 192.168.221.150.
Escape character is '^]'.
GET /dev/1.php HTTP/1.0

HTTP/1.1 302 Moved Temporarily
Connection: close
Date: Tue, 07 Dec 2004 07:13:28 GMT
Server: Microsoft-IIS/6.0
Content-type: text/html; charset=gb2312
X-Powered-By: PHP/4.3.8
Set-Cookie: PHPSESSID=ba3bbec4d25a9167f166a099a0ae383c; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: 2.php

Connection closed by foreign host.

可以看到PHPSESSID正确的输出了,如果是浏览器的话,会在客户端产生Session Cookie,然后再由Location: 2.php将浏览器转入到2.php上去,这和用户直接请求并无不同。
另外,我也查看了session文件,不会产生两个文件,只会有一个有内容的文件。
所以肯定是你的环境问题。

论坛徽章:
0
6 [报告]
发表于 2004-12-08 10:46 |只看该作者

session问题,更奇怪的问题啊

感谢夜猫做的测试,这和我估计的一样:环境问题。

我也分别在WinXp和Win2003做了测试,结果和夜猫的一样,只在win2000 adv上出现这个问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP