为什么我的session_start()和session_register()没有反应?

waywin 2000-07-06 07:40:00
我用的是NT++IIS+PHP4,下面是我测试session的一段程序,但总是没有反应,直到浏览器告诉无法显示。
<?php
//初始化一个session
session_start();
注册一个session变量
//session_register('counter');
//增加计数器
$counter++;
echo("You have visited this page $counter times! Don't you have anything else to do, you bum?!");
?>
但是下面的就可以:
<?php
$session = $HTTP_COOKIE_VARS["SessionId"];
if ( $session == "" ) {
$session = uniqid ( getenv ( "REMOTE_ADDR" ) );
// Send session id - expires when browser exits
SetCookie ( "SessionId", $session );
}
?>
<HTML>
<HEAD><TITLE>Session Test</TITLE></HEAD>
<BODY>
Current session id: <?php echo $session ?>
</BODY></HTML>
请问这是为什么?
...全文
237 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
peacock 2000-11-12
  • 打赏
  • 举报
回复
第一个问题的解释:
setcookie、session的内容在当前页是不存在的,只有在这页完了才生效,所以你的$counter永远不变。(一般在setcookie和session之后紧接着加上header("Location: "))

第二个问题的解释:
和上一个问题是一个意思,
当你第一次运行的时候,
$session = "",
然后执行
$session = uniqid ( getenv ( "REMOTE_ADDR" ) );
// Send session id - expires when browser exits
SetCookie ( "SessionId", $session );
这时候$session的值就存在了,可是$SessionId并不存在,因为这页还没完,所以下面显示的$session的值实际上是uniqid ( getenv ( "REMOTE_ADDR" ) )
当你第二次执行的时候,¥SessionId就生效了,这时候就不会执行if中的语句。

sapper 2000-11-06
  • 打赏
  • 举报
回复
拜托,你的程序只有一点小错误,你的//注释不是加在"session_register('counter');"前面,而是要加在"注册一个session变量"前面。
ppc207 2000-10-11
  • 打赏
  • 举报
回复
小问题的调试很麻烦的,有时可能会因为少一个"$"费半天周折,仔细点,再看看原程序。
zgq 2000-07-11
  • 打赏
  • 举报
回复
装4.01吧
zgq 2000-07-10
  • 打赏
  • 举报
回复
你的系统和版本
waywin 2000-07-10
  • 打赏
  • 举报
回复
我改用cgi安装php4就可以了,看来ispa装的php还是有问题!

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧