Итак, проблема такая: делаю авторизацию. Переменные для обработчика передаю методом POST. Стартуется сессия на каждой странице. Переменные POST (логин и пароль) заношу в массив с ключами $_SESSION['login'] и $_SESSION['pass']. На первую страницу сразу после авторизации этот массив еще сохраняет значения логина и пароля, но если кликаю на ссылке и пытаюсь перейти на другую страницу, то массив становится пустым... как так получается? мне надо чтобы, они сохранялись.
Тоесть, нужно, чтобы я один раз вбил в форму логин и пароль и чтобы они сохранялись в массиве $_SESSION все время, пока я с этим массивом не сделаю unset.
- 26.08.2013 16:35Новичок


- Регистрация: 07.11.2011
- Сообщений: 5
- Репутация: 0
Последний раз редактировалось Hardander; 26.08.2013 в 16:56.
- 26.08.2013 17:18
Переменные сессии по умолчанию сохраняются пока открыто окно браузера, если его закрыть, то сессия обрывается. Можно вручную выставить время жизни сессии, тогда сохранится на выставленное время, например 3600 секунд.
- 26.08.2013 17:39Новичок


- Регистрация: 07.11.2011
- Сообщений: 5
- Репутация: 0
Tiefe, Да... все верно!! раньше когда делал авторизацию, у меня переменные сессии тянулись до тех пор, пока не захлопну браузер... Но сейчас - почему то не так же как всегда... вот как вывожу контент
PHP код:public function getContent()
{
global $dbClass; // это класс, откуда беру данные, полученные от запросов к базе данных
#####это все необходимые переменные#######
$page = trim(htmlspecialchars($_GET['page'])); //передаю страницу
$section = trim(htmlspecialchars($_GET['section'])); //передаю раздел
$submit = trim(htmlspecialchars($_POST['submit'])); //это кнопка формы submit
$login = trim(htmlspecialchars($_POST['login'])); //это поле, куда вбиваю логин
$pass = trim(htmlspecialchars($_POST['pass'])); // это поле, куда вбиваю пароль
############Условие вывода формы авторизации############
if($page == 'authorisation')
{
$content = $this->getAuthorisationForm(); // вывод авторизационной формы
}
########################################################
if($page == 'workarea')
{
$user_info = $dbClass->queryUser($login); //результат запроса юзера в одной переменной
$user_data_arr = mysql_fetch_assoc($user_info); //массив, содержащий данные о пользователе, имя которого $login
if($user_data_arr['login_user'] == $login) // проверка соответствия логина из формы и логину в базе данных
{
if($user_data_arr['login_pass'] == $pass) // проверка соответствия паролей
{
$_SESSION['login'] = $user_data_arr['login_user']; //заносятся POST переменные в массив $_SESSION
$_SESSION['pass'] = $user_data_arr['login_pass']; //заносятся POST переменные в массив $_SESSION
$_SESSION['priveleges'] = $user_data_arr['priveleges_user']; //заносятся POST переменные в массив $_SESSION
if($_SESSION['login'] != '') // если переменная сессии не пустая, то выводить контент
{
$content = 'Вы вошли в рабочую зону администратора';
$content .= $this->getMenuAfterAuthorisation();
$content .= $_SESSION['login']; //здесь еще переменная выводится
if($section == 1)
{
$content .= $this->getPageCompany();
$content .= $_SESSION['login']; // здесь ее уже не видно
}
}
else
{
$content .= $this->getAuthorisationForm();
}
}
else
{
$content = $this->getAuthorisationForm();
$content .= 'Неправильный пароль';
}
}
else
{
$content = $this->getAuthorisationForm();
$content .= 'Неправильный логин';
}
}
return $content;
}
- 26.08.2013 18:07Новичок

- Регистрация: 26.08.2013
- Сообщений: 5
- Репутация: 0
А как Вы "сессию стартуете"? Функцию session_start() в начале скрипта применяете?
- 26.08.2013 18:14Новичок


- Регистрация: 07.11.2011
- Сообщений: 5
- Репутация: 0
mr.Verman, вывод контента делаю в отдельном файле
PHP код:<?php
$mainClass->getSessionStart(); // здесь просто одна строчка session_start();
?>
<!DOCTYPE HTML>
<html>
<head>
<link href="/css/style.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php
echo $mainClass->getContent(); // здесь выводится контент в зависимости от различных параметров
?>
</body>
</html>
Если стартану сессию внутри метода getContent(), то получу ошибку, что заголовки уже отправленыПоследний раз редактировалось Hardander; 26.08.2013 в 18:27.
- 26.08.2013 18:27
Hardander, навскидку задам три вопроса:
- значения в $_SESSION нигде не перезаписываются пустыми значениями?
- на стороне сервера всё корректно? (в частности, создаются ли сессионные файлы)
- куки устанавливаются?
Если не срабатывает второй или третий пункт, то сервер не может определить идентификатор сессии, и, как вывод, у вас всё и теряется. - 27.08.2013 14:54Дипломник

- Регистрация: 06.06.2011
- Сообщений: 105
- Репутация: 11
чуть оффтопа
а зачем ?PHP код:если ужеif($user_data_arr['login_user'] == $login)
PHP код:$user_data_arr = mysql_fetch_assoc($user_info); //массив, содержащий данные о пользователе, имя которого $login
Тэги топика:
- post,
- _session,
- авторизация,
- логин,
- массив,
- пароль,
- переменная,
- проблема,
- сессия,
- страница
Похожие темы
| Темы | Раздел | Ответов | Последний пост |
|---|---|---|---|
Проблема в ipb 3.2.3 | CMS | 0 | 12.10.2012 18:08 |
Проблема с RDS bar'ом | Софт, скрипты, сервисы | 8 | 17.09.2012 02:43 |
проблема в ИЕ | Web программирование | 5 | 02.10.2011 14:38 |
Проблема с ДЛЕ | Софт, скрипты, сервисы | 2 | 27.01.2010 14:12 |



