PHP SESSION读取问题,为什么老是报错session已经开启



 <?php
/**
 *fileName  1.php
 * 
 */
    $id = 999898;

    $key = 'order_87';

    $_SESSION[$key] =  $id;

    if(!isset($_GET['code']))
    {
        header('Location:http://www.test.com/'); 
        //流程是第一次去请求接口,接口会返回$_GET['code'],接口会重新请求本1.php
        //我需要在接口返回code之后保存$id的值
    }
    else
    {
        $code = $_GET['code'];
    }   


    $id = $_SESSION[$key]; 
//为什么这里会报notice 错误 undefined index $key ?我明明先设置了的,session已经开启

sessionstorage session php cookie cookies

elzzird 9 years, 10 months ago

你贴的这段代码不是原始的代码吧?

不管你有没有开启session,你在一开始就给 $_SESSION[$key] 赋值了,那么就不会出现 undefined index

我猜你这个问题主要是因为header跳转后session_id没有传递,可以检查下这几个东西:


 1. 客户端是否禁用了cookie,如果禁用的话,用header要手动传递session_id或开启session.use_trans_sid
2. session_start()要先于任何header()
3. 跳转目标是否开启了session_start()

阿尔托莉娅 answered 9 years, 10 months ago

session_start(); //加入了吗?

zypher answered 9 years, 10 months ago

设置 $_SESSION[$key] = $id;
立即读取:var_dump($_SESSION[$key]);看看这样子行不行;

昵称什么的…… answered 9 years, 10 months ago

就是说 session 存储不了值? 确定磁盘(如果存在磁盘的话)没有满?

本须和水鱼 answered 9 years, 10 months ago

加 session_start();

框架用多了吧 哈哈
很多框架默认开启的

看了下回复 key是变量时候的问题
说明这个变量不存在了

假装、开心 answered 9 years, 10 months ago

夕阳下的三号机 answered 9 years, 10 months ago

Your Answer