设置cookie代码页面如下:
$msrs=$conn->execute("select b.GroupName,b.AuthItem,b.AuthArea from SYS_admin a left outer join SYS_AuthGroup b on a.GroupID=b.GroupID where a.User_ID='".$_SESSION['LOGIN_USER_ID']."'");
if(!$msrs->eof)
{
    setcookie('JDKH[AuthItem]',$msrs->Fields['AuthItem']->Value,time()+36000);/* 有效期 10个小时 */
setcookie('JDKH[AuthArea]',",".$msrs->Fields['AuthArea']->Value.",",time()+36000);/* 有效期 10个小时 */ 
setcookie('JDKH[AuthType]',"HRadmin",time()+36000);/* 有效期 10个小时 */ 
$LoginAble2="Yes";
}
$msrs->close();print_r($_COOKIE);输出的JDKH[  ]为空   但在浏览器中查看cookie却是有值的。困扰很久了,希望各位大神帮看一下,感激不尽!

解决方案 »

  1.   

    测试了一下,没问题,你的 setcookie() 是不是重写过,加了前缀什么的,用 chrome 调试查看 Resources ->Cookies 查看是否有值
      

  2.   

    没有重写呢,不过php版本升级了,从5.2升到5.4,但是cookie应该没有影响吧,chrome 调试COOKIES是有值的,但是页面输不出来
      

  3.   

    你在哪 print_r($_COOKIE); 的?
      

  4.   

    if(!$msrs->eof)
    {
        setcookie('JDKH[AuthItem]',$msrs->Fields['AuthItem']->Value,time()+36000);/* 有效期 10个小时 */
    setcookie('JDKH[AuthArea]',",".$msrs->Fields['AuthArea']->Value.",",time()+36000);/* 有效期 10个小时 */ 
    setcookie('JDKH[AuthType]',"HRadmin",time()+36000);/* 有效期 10个小时 */ 
    $LoginAble2="Yes";
    }
    首先你要确定条件能进入去setcookie
    然后,在print_r($_COOKIE); 看看有什么。你是否在同一域名下设置呢?
    要测试是否cookie有问题,可以使用一个简单的例子
    <?php
    if(isset($_COOKIE['abc'])){
        echo $_COOKIE['abc'];
        echo 'read cookie';
    }else{
        $data = time();
        setcookie('abc',$data,time()+3600);
        echo $data;
        echo 'set cookie';
    }
    ?>
      

  5.   

    没有重写呢,不过php版本升级了,从5.2升到5.4,但是cookie应该没有影响吧,chrome 调试COOKIES是有值的,但是页面输不出来
    调试结果是这样的:
    JDKH[AuthArea] %2C%C8%AB%CC%E5%B2%BF%C3%C5%2C 192.168.128.17 /general/jb_works/jidukaohe 2017-02-22T19:01:31.455Z 44
    JDKH[AuthType] HRadmin 192.168.128.17 /general/jb_works/jidukaohe 2017-02-22T19:01:31.455Z 21
      

  6.   

    条件没有问题的,我直接echo赋值可以输出来
    $msrs=$conn->execute("select b.GroupName,b.AuthItem,b.AuthArea from SYS_admin a left outer join SYS_AuthGroup b on a.GroupID=b.GroupID where a.User_ID='".$_SESSION['LOGIN_USER_ID']."'");
    if(!$msrs->eof)
    {
    echo $msrs->Fields['AuthItem']->Value;
        //setcookie('JDKH[AuthItem]',$msrs->Fields['AuthItem']->Value,time()+36000);/* 有效期 10个小时 */
    setcookie('PIC_AuthItem',$msrs->Fields['AuthItem']->Value,time()+36000);
    setcookie('JDKH[AuthArea]',",".$msrs->Fields['AuthArea']->Value.",",time()+36000);/* 有效期 10个小时 */ 
    setcookie('JDKH[AuthType]',"HRadmin",time()+36000);/* 有效期 10个小时 */ 
    $LoginAble2="Yes";
    }
    print_r($_COOKIE); 是在另一个页面输出的,所有页面都是同一个服务器上,没有跨域的。测试过cookie是没有问题的,只有这个页面设置的cookie无法输出
      

  7.   

    print_r($_COOKIE); 所有的cookie,只有[JDKH]这个为空呢
    Array ( [JDKH] => [SID_1304] => 72a546d0 [UI_COOKIE] => 0 [SID_1] => b5ea574 [SID_7904] => 65ad2d80 [flow_view] => 0 [sdmenu_my_menu] => 1000 [CNZZDATA155540] => cnzz_eid=1224864015-1486540938-http%3A%2F%2F192.168.128.17%3A2046%2F&ntime=1486540938 [PHPSESSID] => hqdbk3lllc8ek63m6rgaf14v15 [OA_USER_ID] => admin ) 
      

  8.   

    print_r($_COOKIE); 都看到了什么?你的 setcookie 函数没有指定 路径 (第 4 个参数)
    那么 使用 cookie 和 设置 cookie 的程序不是在同一目录下的话,是接收不到 cookie 的
      

  9.   

    路径设为任意:  setcookie('JDKH[AuthItem]',$msrs->Fields['AuthItem']->Value,time()+36000,'/');/* 有效期 10个小时 */
    setcookie('JDKH[AuthArea]',",".$msrs->Fields['AuthArea']->Value.",",time()+36000,'/');/* 有效期 10个小时 */ 
    setcookie('JDKH[AuthType]',"HRadmin",time()+36000,'/');/* 有效期 10个小时 */ 
    $LoginAble2="Yes";
    }
    也不行呢
    print_r($_COOKIE); 
    结果如下:
    Array ( [SID_1304] => 72a546d0 [UI_COOKIE] => 0 [SID_1] => d42bed9f [SID_7904] => 65ad2d80 [flow_view] => 0 [sdmenu_my_menu] => 1000 [CNZZDATA155540] => cnzz_eid=1224864015-1486540938-http%3A%2F%2F192.168.128.17%3A2046%2F&ntime=1486540938 [PHPSESSID] => a6ok78u908c5sr8rro5oafrfq7 [OA_USER_ID] => admin [JDKH] => ) 
      

  10.   

    那就要检查 $msrs->Fields['AuthItem']->Value 是否有值了
      

  11.   

     有的,我单独  echo $msrs->Fields['AuthItem']->Value; 是可以输出值的