第一个session 关于演示session是如何工作的标准例子之一就是点击计数的应用 -- 这是一个简单的基于session的计数器,在你第一次访问一个web页面时初始化一个变量,每一次当你重新装入这个页面时增加它的计数。代码如下: <?php //初始化一个session session_start(); //注册一个session变量 session_register('counter'); ?> 在PHP4中每一个session都通过调用session_start()函数开始,这个函数检查一个session是否存在,如果 不存在则创建一个新的。接着,用session_register()函数来注册一个变量,它将生存在整个session中 -- 在 上面的例子中,变量名为"counter",并且没有给它赋任何值。 现在,让我们在上面的例子中加几行代码,点击计数将开始工作了: <?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?!"); ?> 试一试它!当你每一次重装这个页面时,计数器的值都在增加,这个说明了在session中变量是如何被保存 的。 为什么为发会生这样的情况呢?唔,每次一个session被创建,一个session的cookie[叫做PHPSESSID]会在 客户系统中被创建,并且被赋了一个随机数;同时,在服务器端一个相似的入口被创建,它包含着在session中 注册过的变量。在客户与服务器之间的通讯就通过这个有相同命名的session的标识号(id)来实现,这样就可以 在整个session期间保存不同的变量。 让我们再看一下复杂一点的吧?看这个例子,它演示了一个使用session变量的计时器,它将告诉你在重新 装入页面时过了多长的时间。 <?php session_start(); //session变量用于保存计数器 session_register('counter'); //session变量用于保存最后装入的时间值 //这个值被保存以便比较两次的不同 session_register('timeAtLastLoad'); //当前时间 $timeNow = time(); //增加计数 $counter++; //计算两次时间间隔 $timeLapsed = $timeNow - $timeAtLastLoad; //显示信息 if($counter > 1) { echo "<b>It's been $timeLapsed seconds since you last viewed this page.</b>"; } else { echo "<b>First time here? Reload this page to see how the session works!</b>"; } $timeAtLastLoad = $timeNow; ?> |