Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.04.2017, 13:01
Интересующийся
Отправить личное сообщение для allonemoon Посмотреть профиль Найти все сообщения от allonemoon
 
Регистрация: 07.04.2015
Сообщений: 18

Работа с сессиями PHP
Здравствуйте! Подскажите как правильно сделать!?

Скрипт авторизации

<?php


//Выход из авторизации
if(isset($_GET['exit']) == true){
//Уничтожаем сессию
session_destroy();

//Делаем редирект
header('Location:'. BEZ_HOST .'?mode=auth');
exit;
}

//Если нажата кнопка то обрабатываем данные
if(isset($_POST['submit']))
{
//Проверяем на пустоту
if(empty($_POST['email']))
$err[] = 'Не введен Логин';

if(empty($_POST['pass']))
$err[] = 'Не введен Пароль';

//Проверяем email
//if(emailValid($_POST['email']) === false)
// $err[] = 'Не корректный E-mail';

//Проверяем наличие ошибок и выводим пользователю
if(count($err) > 0)
echo showErrorMessage($err);
else
{
/*Создаем запрос на выборку из базы
данных для проверки подлиности пользователя*/
$sql = 'SELECT * FROM `'. BEZ_DBPREFIX .'reg` AS `u`
LEFT JOIN `'. BEZ_DBPREFIX .'role` AS `r` ON `u`.`role` = `r`.`id_role`
WHERE `login` = :email
AND `status` = 1';
//Подготавливаем PDO выражение для SQL запроса
$stmt = $db->prepare($sql);
$stmt->bindValue(':email', $_POST['email'], PDO::PARAM_STR);
$stmt->execute();

//Получаем данные SQL запроса
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

//Если логин совподает, проверяем пароль
if(count($rows) > 0)
{
//Получаем данные из таблицы
if(md5(md5($_POST['pass']).$rows[0]['salt']) == $rows[0]['pass'])
{
//Переменные для работы с залогиненым пользователем!
$_SESSION['user'] = true;
$_SESSION['login'] = $_POST['email'];
$_SESSION['role'] = $rows[0]['role'];
$_SESSION['name'] = $rows[0]['name'];

//Сбрасываем параметры
header('Location:'. BEZ_HOST .'?mode=auth');
exit;
}
else
echo showErrorMessage('Неверный пароль!');
}else{
echo showErrorMessage('Логин <b>'. $_POST['email'] .'</b> не найден!');
}
}
}

?>

Страница шаблона

<!DOCTYPE html>
<html>
<head>
<!-- Start META -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="keywords" content="Разработка, движка" />
<meta name="description" content="Разработка, моего движка" />
<!-- TITLE -->
<title>Главная страница</title>

<!-- Start Sheets CSS -->
<link href="./css/style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="wrap">
<div id="menu">
<div class="menu">
<ul>
<li><?php if($_SESSION['role'] == 1) echo "СуперАдмин"?> </li>

<li><a href="<?php echo BEZ_HOST; ?>?mode=auth">Войти</a></li>
<li><a href="<?php echo BEZ_HOST; ?>?mode=reg">Регистрация</a></li>
</ul>
</div>
</div>
<div style="clear:both;"></div>
<div id="content">
<?php echo $content; ?>
</div>
</div>
</body>
</html>

При первоначальном открытии страницы возникает ошибка.
Notice: Undefined index: role in /home/host1579103/kserial.ru/htdocs/www/html/index.htm on line 19

как избежать подобного можно?
Ответить с цитированием
  #2 (permalink)  
Старый 24.04.2017, 18:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Работа с сессией, а где же ее старт?

Речь идет об авторизации, значит уникальный пользователь, значит запрос должен вернуть только одну запись, зачем же fetchAll()?

id_role - нет определения, либо это переменная, которая должна быть указана как $id_role, либо это поле таблицы BEZ_DBPREFIX.role. Разобраться нужно с этим.

Код выставляемый нужно форматировать.
Ответить с цитированием
  #3 (permalink)  
Старый 24.04.2017, 20:19
Интересующийся
Отправить личное сообщение для allonemoon Посмотреть профиль Найти все сообщения от allonemoon
 
Регистрация: 07.04.2015
Сообщений: 18

Прошу прощения! Разобрался, с ситуацией данной вроде как....

Головной файл
//Запускаем сессию
session_start();

//Устанавливаем кодировку и вывод всех ошибок
header('Content-Type: text/html; charset=UTF8');
error_reporting(E_ALL);

//Включаем буферизацию содержимого
ob_start();

//Определяем переменную для переключателя
$mode = isset($_GET['mode']) ? $_GET['mode'] : false;
$user = isset($_SESSION['user']) ? $_SESSION['user'] : false;
$role = isset($_SESSION['role']) ? $_SESSION['role'] : false;
$err = array();

//Устанавливаем ключ защиты
define('BEZ_KEY', true);

//Подключаем конфигурационный файл
include './config.php';

//Подключаем скрипт с функциями
include './func.php';

//подключаем MySQL
include './bd.php';

switch($mode)
{
//Подключаем обработчик с формой регистрации
case 'reg':
include './reg.php';
include './reg_form.htm';
break;

//Подключаем обработчик с формой авторизации
case 'auth':
include './auth.php';
include './auth_form.htm';
include './show.php';
break;

}
//Данные с буфера меню
$menu= ob_get_contents();

//Получаем данные с буфера контент
$content = ob_get_contents();
ob_end_clean();

//Подключаем наш шаблон
include './html/index.htm';
?>

ошибка исчезла....
Ответить с цитированием
  #4 (permalink)  
Старый 24.04.2017, 20:35
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

Сообщение от allonemoon Посмотреть сообщение
//Данные с буфера меню
$menu= ob_get_contents();
//Получаем данные с буфера контент
$content = ob_get_contents();
ob_end_clean();
if($menu===$content) 
    exit('Achtung!');
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа php скриптов с xml файлом guru_nemo Общие вопросы Javascript 9 02.10.2015 15:20
Работа с датой в PHP Severtain Серверные языки и технологии 10 02.08.2012 21:20
Работа php с запросами. Duda.Ml1986@gmail.com Серверные языки и технологии 16 07.01.2012 16:04
PHP работа с DOM(получить последний\первый элемент) bayah Серверные языки и технологии 5 14.02.2011 17:29
Работа js +php без обновления страницы Jekel Javascript под браузер 18 29.11.2009 20:17