dozpv84422 2011-12-15 07:04
浏览 26
已采纳

会话cookie:奇怪的行为? 或者我在这里不明白?

Here is the piece of code:

session_name('somename');
session_start();
echo 'session name:'.session_name();

The above does print the session name as somename. If I append the code below,

if(isset($_COOKIE['somename'])) {
 echo "<br/><br/>"."Cookie somename not yet set";
 }
else {
 echo "<br/><br/>".var_dump($_COOKIE['somename']);
 }

The output is always

Cookie somename not yet set.

Am I using the isset function wrong?

If I just append this:

 echo "<br/><br/>".var_dump($_COOKIE['somename']);

Then, the output for the first time is:

session name:somename
Notice: Undefined index: somename in /path/to/file.php on line 12 NULL

If I refresh the page, then the output is

session name:somename
string(26) "367jr029jj17mdu5fgkfgiv0u6"

Isn't the cookie variable supposed to get set before the page content is loaded? or Have I not understood sessions/cookies?

  • 写回答

2条回答 默认 最新

  • dongqiang5541 2011-12-15 07:33
    关注

    Expanding on Jani Hartikainen's answer

    isset() checks to see if $_COOKIE['somename'] is set.

    First time through before cookies are set:

    // $_COOKIE['somename'] is NOT set so skip to else
    if(isset($_COOKIE['somename'])) {
     echo "<br/><br/>"."Cookie somename not yet set";
     }
    else {
     // $_COOKIE['somename'] is NOT set so you get an error.
     echo "<br/><br/>".var_dump($_COOKIE['somename']);
     }
    

    Second time through after cookies are set:

    // $_COOKIE['somename'] is set so show message
    if(isset($_COOKIE['somename'])) {
     echo "<br/><br/>"."Cookie somename not yet set";
     }
    else {
     // $_COOKIE['somename'] is set so skip this part.
     echo "<br/><br/>".var_dump($_COOKIE['somename']);
     }
    

    A more appropriate use of isset would be something like:

    if(isset($_COOKIE['somename'])) {
     echo "<br/><br/>".var_dump($_COOKIE['somename']);
     }
    else {
      echo "<br/><br/>"."Cookie somename not yet set";
     }
    

    In the last example I use isset to determine if $_COOKIE['somename'] has been set. If so, then I dump it; otherwise, I show the message “Cookie somename not yet set”

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题