Проблема с сессией во время обновления - PullRequest
0 голосов
/ 28 мая 2009

Когда я обновляю свое гибкое приложение, страница не сохраняет свое состояние и возвращается на страницу входа. Я не уверен, почему это происходит, вот мой сеанс обработки кода.

публичная функция doLogin ($ username, $ password) {

        include("connection.php");
        session_start();
        session_register("session");


        $query = "SELECT *
                  FROM users
                  WHERE username = '".mysql_escape_string($username)."'
                  AND password = '".mysql_escape_string($password)."'";
        $result = mysql_fetch_array(mysql_query($query));
        if(!$result) {
        session_unset();
        return 'no';
        }
        else 
            {
        $session['id']=session_id();
        $session['username']=$username;
        return 'yes';
            }
        }

    public function Logout() { 

    session_start();
    session_register("session");
    session_unset();
    session_destroy();
    return 'logout';        
    }

Должен ли я что-то делать на панели Flex, которая загружается после успешного входа в систему.

Ответы [ 4 ]

0 голосов
/ 28 мая 2009

ваша проблема здесь

   else 
                    {
            $session['id']=session_id();
            $session['username']=$username;
            return 'yes';
                    }
            }

$ session не определено ... если вы хотите сохранить что-либо в массиве сессии, используйте $ _SESSION

0 голосов
/ 28 мая 2009

Под обновлением вы подразумеваете перезагрузку страницы (F5). Если так, то это причина! Перезагрузка / обновление переинициализирует все. Поэтому, какое бы ни было ваше начальное состояние (логин), будет отображаться при перезагрузке / обновлении.

Если вы хотите сохранить состояние приложений, то каждый раз, когда состояние изменяется, вам придется сохранять его данные в БД, а затем, когда пользователь нажимает стартовую страницу, перезагружать свой сеанс.

Если браузер обновляется / перезагружается (или происходит сбой и т. Д.), У вас нет средств заставить приложение выйти из системы, поэтому вам нужно будет вернуться к последнему известному состоянию при попадании на страницу входа. Это, конечно, может привести к серьезным проблемам с безопасностью, если пользователь не вошел в систему должным образом.

0 голосов
/ 28 мая 2009

Поддерживаете ли вы идентификатор сеанса в своем Flex-приложении и отправляете его вместе с новыми запросами?

Можете ли вы проверить и подтвердить, что один и тот же идентификатор сеанса возвращается из ваших PHP-скриптов при каждом запросе во Flex?

Сохраняете ли вы идентификатор сеанса в файле cookie вне вашего приложения Flex? Если нет, вы потеряете свой идентификатор сессии при обновлении страницы. Вам нужно будет хранить их в локальном хранилище или в файле cookie и обращаться к нему при запуске приложения flex.

0 голосов
/ 28 мая 2009

После успешного входа в систему перенаправьте обратно на другую страницу.

Например

if(doLogin($user,$pass) == 'yes')
{
    Header("Location: index.php");
    exit;
}
...