Переменные сеанса не работают php

Вот код моей страницы входа, где скрипт входа в систему проверяет подлинность пользователя и затем перенаправляет на страницу «Входящие» с использованием функции заголовка.

<?php session_start(); include_once('config.php'); $user=htmlentities(stripslashes($_POST['username'])); $password=htmlentities(stripslashes($_POST['password'])); // Some query processing on database if(($id_user_fetched<=$id_max_fetched) && ($id_user_fetched!=0)){ $_SESSION['loggedIn'] = 'yes'; header("Location:http://xyz/inbox.php?u=$id_user_fetched"); //echo 'Login Successful'; }else{ echo 'Invalid Login'; echo'<br /> <a href="index.html">Click here to try again</a>'; } }else{ echo mysqli_error("Login Credentials Incorrect!"); } ?> 

Страница inbox.php выглядит так:

 <?php session_start(); echo 'SESSION ='.$_SESSION['loggedIn']; if($_SESSION['loggedIn'] != 'yes'){ echo $message = 'you must log in to see this page.'; //header('location:login.php'); } //REST OF THE CODE ?> 

Теперь с указанным выше кодом inbox.php всегда показывает результат: SESSION = вы должны войти в систему, чтобы просмотреть эту страницу. Это означает, что либо переменная сеанса не настроена, либо inbox.php не может получить переменную сеанса. Где я иду не так?

  1. Убедитесь, что session_start(); вызывается перед вызовом любых сеансов. Таким образом, безопасная ставка заключалась бы в том, чтобы разместить ее в начале вашей страницы сразу после открытия <?php перед чем-либо еще. Также убедитесь, что перед открывающим <?php нет пробелов / вкладок.
  2. После перенаправления header завершите текущий скрипт, используя exit(); (Другие также предложили session_write_close(); и session_regenerate_id(true) , вы также можете попробовать их, но я бы использовал exit(); ).
  3. Убедитесь, что файлы cookie включены в браузере, который вы используете, чтобы проверить его.
  4. Убедитесь, что register_globals выключен, вы можете проверить это в файле php.ini а также с помощью phpinfo() . Обратитесь к этому, как отключить его.
  5. Убедитесь, что вы не удалили или не очистили сеанс.
  6. Убедитесь, что ключ в суперглобальном массиве $_SESSION не перезаписан нигде.
  7. Убедитесь, что вы перенаправляетесь в тот же домен. Поэтому перенаправление с www.yourdomain.com на yourdomain.com не переносит сессию вперед.
  8. Убедитесь, что расширение файла .php (это происходит!).

Сессия PHP потеряна после перенаправления

У меня была такая же проблема на некоторое время, и мне было очень трудно ее понять. Моя проблема заключалась в том, что у меня был сайт, работающий некоторое время, с сессиями, работающими правильно, а потом все внезапно все сломалось.

По-видимому, ваш session_save_path (), для меня это / var / lib / php5 /, должен иметь 777 chmod-разрешений. Я случайно изменил его, полностью сломав сессии.

Чтобы исправить это, просто сделайте sudo chmod -R 777 /var/lib/php5/ (или независимо от вашего session_save_path ()) в linux.

EDIT: Изменение разрешения на 777 не является лучшим решением, если вы знаете пользователя, которым вы запустили свой серверный сервер. Запустите sudo chmod -R 700 /var/lib/php5/ а затем sudo chown -R www-data /var/lib/php5/ чтобы пользователь php имел доступ к папке.

Возможно, если ваш сеанс не работает должным образом, вы можете попробовать session.save_path(path/to/any folder); как альтернативный путь. Если это сработает, вы можете спросить своего хостинг-провайдера о проблеме с пути по умолчанию.

Просто поговорил с услугой хостинга, это была проблема в их конце. он сказал: «Ваша учетная запись session.save_path не была установлена, поскольку возникла проблема. Я установил ее для вас сейчас».

И это отлично работает после этого 🙂

Если вы используете скрипт подключения, не забудьте использовать start_session(); при подключении тоже возникли проблемы, прежде чем замечать этот вопрос.

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

 session_set_cookie_params(0) 

У меня была аналогичная проблема и с доменом cookie:

  ini_set('session.cookie_domain', '.domain.com'); 

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

Сегодня я столкнулся с этой проблемой. проблема связана с $ config ['base_url']. Я заметил, что проблема htpp: //www.domain.com и http://example.com была проблемой. исправлять, всегда устанавливайте base_url на http://www.example.com