Maison >développement back-end >tutoriel php >cookie - PHP SESSION读取问题,为什么老是报错session已经开启

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

WBOY
WBOYoriginal
2016-06-06 20:34:351048parcourir

<code><?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已经开启
</code></code>

回复内容:

<code><?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已经开启
</code></code>

session_start(); //加入了吗?

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

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

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

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

运行正常,戳demo

加 session_start();

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

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

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

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

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn