2017-01-19 3 views
0

Привет У меня есть странный вопрос, где у меня есть страница входа в index.php: в которой необходимо войти в страницу Я настраиваю:

$_SESSION['user'] = $row['username']; 

для пользователей, которые успешно вошли в систему. Тогда на целевой странице у меня есть чек, чтобы увидеть, если пользователь вошел в систему, если не будет перенаправлен на страницу регистрации:

if(!$session->is_loggedin()) { 
    // session no set redirects to login page 
    $session->redirect('index.php'); 
} 

Внутри файла класса:

public function is_loggedin() { 
    if(isset($_SESSION['user'])) { 
     return true; 
    } 
} 

Так проблема, с которой я столкнулась, представлена ​​только на интернет-сервере на локальном хосте xampp, все работает нормально. Проблема в том, что я вхожу на сайт. то Если выйдите из системы и введите URL-адрес входа в систему, я получаю перенаправление на home.php, где я делаю print_r ($ _ SESSION), и он показывает, что в массиве есть сеанс, как и сеанс. но когда я нажимаю на какие-либо ссылки в меню, я отправляю обратно на страницу входа без сеанса.

и должны войти в систему.

код на странице index.php, чтобы проверить, если сессия существует:

if($login->is_loggedin()!="") { 
    $login->redirect('home.php'); 
} 

Так что в этом случае каждый раз, когда пользователь приходит на страницу он показывает, как он вошел в систему, но это не так, и тогда он может видеть home.php, который должен быть защищен. Как только пользователь нажимает на любую ссылку в меню, он получает перенаправление на страницу входа.

Я предполагаю, что это может быть некоторая конфигурация php, поскольку на локальном хосте XAMPP работает. Любая идея, где я должен смотреть?

EDIT: Я поместил следующую проверку на индексной странице:

if(isset($_SESSION['user']) && !empty($_SESSION['user'])) { 
    echo 'Set and not empty, and no undefined index error!'; 
} 

, чтобы проверить, есть ли сессия, так что каждый раз, когда я открываю URL он показывает TRUE. когда я открываю /home.php, он открывает домашнюю страницу, нажимая на любые ссылки, перенаправленные на домашнюю страницу, где она ничего не повторяет. Кажется, что сервер кэширует первую страницу с сессией каждый раз, когда я ее открываю. или браузер автоматически отправляет эту информацию на сервер.

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

Другое дело, что встречается, в том, что при установлении поддельной сессии все Bootstrap Glyphicon показываются квадратики вместо реальных иконок

я вижу, что в PHP Ставки session.use_only_cookies установлен в положение ON, возможно, это вопрос ,

+0

Обязательный вопрос: вы используете 'session_start()' на всех страницах с сессиями, не так ли? – Machavity

+0

Несколько раз я ответил на этот вопрос, и ответ был следующим: вы пытались использовать массив сеансов, который, как вы считали, уже был установлен, но не был, поэтому при перезагрузке страницы был найден массив сеансов. Это и/или вы только начали сеанс на основе условного. –

+0

Итак, всегда устанавливайте/начинайте сеанс сначала, независимо. И проверьте, установлен ли он. –

ответ

2

для стартеров, чеки входа,

if($login->is_loggedin()!="") 
{ 
$login->redirect('home.php'); 
} 

почему это не if($login->is_loggedin()!== true)

Это доставал какие-нибудь странные возвращения на если чеке,

В настоящее время, если он видит все, что а не "", он не будет перенаправляться на родину, т.е. если ваша функция возвращает false.

То главное, что стоит ко мне, (я может быть способ покинуть базу здесь)

+0

Кроме того, 'is_loggedin()' звучит так, как будто он должен возвращать логическое. – F0G

Смежные вопросы