"Динамика" сеансов - PullRequest
0 голосов
/ 23 мая 2011

У нас есть форма входа, которая обрабатывается php и ajax. Ajax отправляет запрос на страницу php с именем пользователя и паролем для входа в систему. Он получает ответ и, если он верный и рабочая информация, он регистрирует их:

Страница php, которая принимает запросы, имеет следующий код:

        echo (checkLogin($_POST['user'], $_POST['pass']) ? 'true' : 'false');
        if(checkLogin($_POST['user'], $_POST['pass']) == true)
        logIn($_POST['user'], $_POST['pass']);

Функции, используемые в этом выражении:

function logIn($user, $pass)
    {
            $_SESSION['sid'] = md5(md5($user) . md5($pass));
            $_SESSION['username'] = $user;
            $_SESSION['password'] = $pass;
    }

    function checkLogin($user, $pass)
    {
        $user = strtolower($user);
        $pass = strtolower($pass);

        $res = mysql_query("SELECT * FROM users WHERE username='".$user."'");
        if(mysql_num_rows($res) == 1)
        {
            $data = mysql_fetch_assoc($res);
            if($data['pass'] == aCrypt($pass))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;           
        }
    }

Теперь кажется, что сеанс запущен и его можно увидеть только ПОСЛЕ того, как пользователь перезагрузит страницу. Нам нужно, чтобы начать сеанс прямо на странице ... нам нужно обновить всю страницу с помощью ajax? Я действительно не знаю, куда идти отсюда.

1 Ответ

0 голосов
/ 23 мая 2011

Вы, вероятно, хотите использовать шаблон Post-Redirect-Get ;после успешной аутентификации пользователя используйте перенаправление, чтобы отправить его на новую страницу.

Как я уже отмечал выше, обратите внимание на исправление уязвимостей SQL-инъекций и фиксации сеансов в вашем коде.

...