我的$ _SESSION ['']消失了

时间:2011-01-28 09:46:22

标签: php html session

这是我的问题,我有一个PHP SESSION但它消失了......

那是我的代码,

<?php
    session_start();
    if (isset($_SESSION['connect'])) {
        echo $_SESSION['email'];    
        echo '<meta http-equiv="refresh" content="6;URL=http://www.mywebsite.com/management.php">';
    } 
?>

$_SESSION['connect']存在,所以我通过了If check。

当我显示$ _SESSION ['email']时,它有效。 $_SESSION['email'] = mymail@gmail.com.
但是当我被重定向到我的页面management.php $_SESSION['email'] = 1.

management.php

<?php
    session_start();
    echo $_SESSION['email'];
?>

为什么?

感谢。

4 个答案:

答案 0 :(得分:2)

这是您的完整代码吗?如果是这样,您需要添加session_start()才能使用会话。

(见:http://php.net/manual/en/function.session-start.php

问题编辑后:看起来您在此页面上有sessoin_start()。但是你在management.php页面上有吗?

答案 1 :(得分:2)

你是否在不同的域名中重定向?如果是这样,您可以尝试在session_start()

之前设置会话的名称

为此,您必须通过重定向

中的get-parameter提交您的会话名称

echo '<meta http-equiv="refresh" content="6;URL=http://www.mywebsite.com/management.php?sessionname='. session_name() .'">';

然后使用

session_name($_GET['sessionname']);
session_start();

在management.php中

答案 2 :(得分:0)

你必须在management.php上有session_start()

答案 3 :(得分:0)

<强> set.php

<?php

session_start();

/* prevent XSS. */
$_GET   = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING);

if (isset($_GET['session'])) {
    $_SESSION['session'] = $_GET['session'];
    echo 'set succesfully';
} else {
    echo 'use ?session=<your data> to set session data';
}

<强> get.php

<?php

session_start();

/* prevent XSS. */
$_GET   = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING);

if (isset($_SESSION['session'])) {
    echo $_SESSION['session'];
} else {
    echo 'not set yet';
}

<强> setget.php

<?php

session_start();

/* prevent XSS. */
$_GET   = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING);

if (isset($_GET['session'])) {
     $_SESSION['session'] = $_GET['session'];
    header('Location: get.php');
    exit();
} else {
    echo 'use ?session=<your data> to set session data';
}

我将这些php文件(在单个文件夹中)映射到http://localhost/stackoverflow/4826773/

  1. http://localhost/stackoverflow/4826773/set.php?session=test

    输出 set succesfully

  2. http://localhost/stackoverflow/4826773/get.php

    输出 test

  3. http://localhost/stackoverflow/4826773/setget.php?session=hello

    输出 hello

  4. 这是你想要的吗?如果你得到不同的结果,那么事情就会被打破!

    P.S :我认为使用

    <meta http-equiv="refresh" content="6;URL=http://www.mywebsite.com/management.php">
    

    不是最佳做法。