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

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

WBOY
WBOYOriginal
2016-06-06 20:34:351059Durchsuche

<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]);看看这样子行不行;

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn