Мой $ _SESSION [''] исчезает - PullRequest
       1

Мой $ _SESSION [''] исчезает

0 голосов
/ 28 января 2011

Вот моя проблема, у меня PHP СЕССИЯ, но она исчезает ...

Это мой код,

<?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.

Когда я отображаю $ _SESSION ['email'], это работает.$_SESSION['email'] = mymail@gmail.com.
Но когда я перенаправлен на мою страницу management.php $_SESSION['email'] = 1.

management.php

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

Почему?

Спасибо.

Ответы [ 4 ]

2 голосов
/ 28 января 2011

Вы перенаправляете через разные домены? Если это так, вы можете попытаться установить имя вашей сессии перед session_start ()

Чтобы сделать это, вы должны отправить свое имя сеанса через get-параметр в редиректе

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

и затем используйте

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

в менеджменте. Php

2 голосов
/ 28 января 2011

это ваш полный код? если это так, вам нужно добавить session_start() для использования сессий.

(см .: http://php.net/manual/en/function.session-start.php)

После редактирования вопроса: похоже, у вас есть sessoin_start () на этой странице. Но есть ли у вас на странице management.php

0 голосов
/ 28 января 2011

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

Это то, что вы хотите, верно? Если вы получите другие результаты, значит что-то не работает!

P.S : я думаю, используя

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

не считается лучшей практикой.

0 голосов
/ 28 января 2011

у вас должна быть session_start () в файле management.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...