php, проблема с авторизацией, сесия

235
06 февраля 2019, 11:40

никак немогу понять почему после разлогиневания не получается авторизироватся повторно, приходится чистить куки и только тогда авторизация работает снова

вот код проверки логина

# Авторизация
session_set_cookie_params(1800,"/");
session_start();
print_r($_SESSION);
print_r($_COOKIE);
if (!$mPartner->CheckLogin())
{
    $no_header = true;
    $content = '
    <h1>Не можете войти?</h1><br />
    <p>Можете зарегистрироваться в партнёрской программе.</p>
    <p><a href="new.php" class="btn btn-primary btn-large">Перейти к регистрации</a></p>
    <br /><br />
    <p>Или восстановить пароль, если вы его потеряли.</p>
    <p><a href="restore.php" class="btn btn-primary">Восстановление пароля</a></p>';
    include_once dirname(__FILE__) . '/../design/partnerCreate.tpl.php';
    die;
}
/**
    * Функция авторизации
    *
    * @return boolean
    */
    public function CheckLogin()
    {
        global $config;
        $login_successful = false;
        $logout = (isset($_SESSION['logout'])) ? $_SESSION['logout'] : false;
        # Проверка логина и пароля
        if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']))
        {
            $params = array ('email =', 'password =');
            $values = array ('\'' . mysqli_real_escape_string($this->mysqli_db, $_SERVER['PHP_AUTH_USER']) . '\'', '\'' . mysqli_real_escape_string($this->mysqli_db, $_SERVER['PHP_AUTH_PW']) . '\'');
            $search_type = array ('AND');
            $result = $this->mDB->SearchItemsByParamArray('partner', $params, $values, $search_type);
            if ($result == true && $logout != true)
            {
                $_SESSION['id_partner'] = $result[0]['id_partner'];
                $login_successful = true;
            }
        }
        # Если юзер не залогинен
        if (!$login_successful)
        {
            # Форма авторизации
            header('WWW-Authenticate: Basic realm="Enter login and password"');
            header('HTTP/1.0 401 Unauthorized');
        }
        else
        {
            return true;
        }
    }
        public function Login($login, $password)
    {
        global $config;
        $login = trim($login);
        $password = trim($password);
        # проверка пароля
        if (md5($password) != $config['partner']['password'] || $login != $config['partner']['login'])
            return false;
        # открытие сессии
        session_start();
        $_SESSION['is_partner'] = true;
        $_SESSION['logout'] = false;
        unset($_SESSION['logout']);
        return true;
    }
}

а это код разлогиневания

    session_start();
    $_SESSION['logout'] = true;
    $_SESSION['id_partner'] = false;
unset($_COOKIE["PHPSESSID"]);
setcookie("PHPSESSID", "", time() - 100);
header('Location: index.php');

причем куки так и не удаляются почему-то

UP: попробовал так:

session_destroy();
header('Location: index.php');

после перенапавления на index.php команда: print_r($_SESSION); выдает следующее:

Array
(
    [id_partner] => 5
)
Answer 1

Цитата:
session_destroy();
header('Location: index.php');

Функция session_destroy уничтожает все данные, связанные с текущей сессией, но не удаляет какие-либо глобальные переменные, связанные с сессией и не удаляет сессионные cookie.

Попробуйте использовать session_unset

READ ALSO
Горизонтальная рулетка

Горизонтальная рулетка

Всем привет, есть уже давно слитый код горизонтальной рулетки, вопрос в том как мне после нажатия кнопки сделать так чтобы её нельзя было...

239
ActiveDataProvider - вывод записей, начиная с указанного ID

ActiveDataProvider - вывод записей, начиная с указанного ID

Каким образом можно выбрать данные из БД путем ввода цифры, после которой будут выбираться данные

185
frame not found in cellmap DomPDF

frame not found in cellmap DomPDF

Ошибка из сабжа появляется при попытки рендеринга xls файлаНасколько я понимаю это ошибка из-за того что ячейки из excel документа не влезают...

225
Внешние папки в проекте Codeigniter

Внешние папки в проекте Codeigniter

Использую CIУ меня есть папка projects в корне, где находятся папки с проектами к каждой которой есть файл index

160