对于会话变量的未定义索引,即使我已经设置了cookie

时间:2012-09-11 17:13:10

标签: php

我正在尝试将Cookie设置为php会话变量,以便会话不会在2个月后过期。我遇到的问题是,大约3个小时后,当我刷新页面时,我在第30行得到$_SESSION['id']的未定义索引。但我没有得到$_SESSION['id']的未定义索引在第20-23行之间。

为什么我仍然得到未定义的索引,即使我已为此会话变量设置了cookie?

$inTwoMonths = 60 * 60 * 24 * 60 + time();
    setcookie('id', 'ID', $inTwoMonths);


    //line 20-23
    if (isset($_POST['id'])) {

    $_SESSION['id'] = $_POST['id'];

    }

    //line 30
    <?php echo $_SESSION['id'] ?>

1 个答案:

答案 0 :(得分:0)

会话!= COOKIE。

您必须在php.ini中设置SESSION TTL(默认为20分钟)。

在第20-23行,你没有得到未定义的索引,因为你设置了var。但是在第30行,你试图读取未定义的变量(因为你之前没有设置它。)

尝试这样的事情:

$_SESSION['id'] = $_COOKIE['id'];

你还需要使用session_start();到初始会话。