потерять переменную сеанса после перенаправления - PullRequest
0 голосов
/ 22 апреля 2011

Это мои настройки.Пользователь может связаться с Facebook.Затем я использую идентификатор Facebook, чтобы найти идентификатор в моей таблице пользователей.Я хочу добавить идентификатор Facebook и идентификатор пользователя из моей таблицы в сеансе.Затем я перенаправляю пользователя на главную страницу.

        /*
         * Leg til facebook id i session hvis bruker logger in/registrer seg med facebook
         */      
        $_SESSION['fb_id'] = $fb['id'];                     

        /*
         * Set user id
         */
        $_SESSION['id'] = $id; 

        /*
         * Auto log-out after 45 minutes
        */          
        $_SESSION['expires'] = time()+(45*60);

        /*
        * Log to db
        */  
        $this->log_login_attempt(true); 

        /*
        * Redirect user to game
        */           
        $host = $_SERVER["HTTP_HOST"]; 
        header("location: http://$host/homepage.php");  //@ redirect
        exit();

Если я сделаю echo var_dump($_SESSION) до перенаправления, я получу:

array(3) { ["fb_id"]=> string(9) "7683402XX" ["id"]=> int(12) ["expires"]=> int(1303482308) } 

Поэтому я перенаправляю пользователя на homepage.php, здесь я просто ввожу:

error_reporting(E_ALL); 
ini_set("display_errors", true); 
require '../sys/core/errorhandler.php';
set_error_handler('my_error_handler');

$a = session_id();
if ($a == '') session_start();

echo var_dump($_SESSION); 
exit();     

Этот результат:

array(2) { ["id"]=> int(12) ["expires"]=> int(1303482647) } 

Каким-то образом $_SESSION['fb_id'] исчез?Как это может произойти?

Ответы [ 2 ]

2 голосов
/ 22 апреля 2011

Убедитесь, что у вас есть session_start() в самом верху вашего скрипта, прежде чем вы установите $_SESSION['fb_id'] и так далее.Без запуска сеанса, когда вы выгрузите $_SESSION, значения будут там, но как обычные переменные - они не сохранятся между загрузками страниц.

0 голосов
/ 22 апреля 2011

Однажды у меня возникла та же проблема, и оказалось, что на сервере больше нет свободного места на диске, поэтому он не может хранить $_SESSION переменных.

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