0 / 0 / 1
Регистрация: 16.09.2013
Сообщений: 16

Сессии на php и вход в админку

24.09.2013, 22:24. Показов 3228. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
<?php session_start();
if(!$_SESSION['login']) header('Location: login.html'); ?>
Этим кодом проверяю сессию если есть то отображаю страницу, если нет то отправляют на логин html

PHP
1
2
<?php session_start();
if(!$_SESSION['login'] == 'admin') header('Location: login.html'); ?>
но не работает

так создается сессия и проходит авторизация
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<script type="text/javascript">
window.location = "new.php"
</script><?php
    session_start();//  вся процедура работает на сессиях. Именно в ней хранятся данные  пользователя, пока он находится на сайте. Очень важно запустить их в  самом начале странички!!!
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
    if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
    //заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
    {
    exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
    }
    //если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
    $login = stripslashes($login);
    $login = htmlspecialchars($login);
$password = stripslashes($password);
    $password = htmlspecialchars($password);
//удаляем лишние пробелы
    $login = trim($login);
    $password = trim($password);
// подключаемся к базе
    include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь 
 
$result = mysql_query("SELECT * FROM users WHERE login='$login'",$db); //извлекаем из базы все данные о пользователе с введенным логином
    $myrow = mysql_fetch_array($result);
    if (empty($myrow['password']))
    {
    //если пользователя с введенным логином не существует
    exit ("Извините, введённый вами login или пароль неверный.");
    }
    else {
    //если существует, то сверяем пароли
    if ($myrow['password']==$password) {
    //если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!
    $_SESSION['login']=$myrow['login']; 
    $_SESSION['id']=$myrow['id'];
//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь
    echo "Вы успешно вошли на сайт! <a href='new.php'>Главная страница</a>";
    }
 else {
    //если пароли не сошлись
 
    exit ("Извините, введённый вами login или пароль неверный.");
    }
    }
    ?>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.09.2013, 22:24
Ответы с готовыми решениями:

Вход в админку!
Доброго времени суток!Такая проблема!При входе в админку ввожу логин и пароль окошко ввода просто обновляется и всё!Пробовал заходить с...

Вход в админку WP
Вообщем на главной странице сайта вылезла какая-то дрянь, она же и не дает зайти в админку... Переименовывал plugins &amp; themes,...

Вход в админку
Добрый день, не знаю куда писать, прошу помощи. Создал сайт джумла 3, год назад, поставил защиту скрывать админку ( слово пароль) теперь...

3
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
24.09.2013, 23:30
Цитата Сообщение от iptips Посмотреть сообщение
PHP
1
if(!$_SESSION['login'] == 'admin')
и о чем мы думаем при составлении такого?
Что произойдет здесь:
1. Т.к. стоит символ ! (отрицание) перед $_SESSION['login'], то ее значение приведется к булеву типу и изменится на противоположное (т.е., если там есть какое-то непустое значение, то приведется в true, а затем изменится на false). Про пустые значения при приведении к булеву можете почитать здесь
2. Таким образом, первым аргументом может быть только true или false. True - если значение "пустое", False - если там что-то есть.
3. Дальше у нас идет сравнение булева со строкой. Идем сюда http://www.php.net/manual/ru/l... arison.php, смотрим вторую таблицу. Видим "нашу" строку
Тип операнда 1Тип операнда 2Результат
bool или nullчто угодноПреобразуется в bool, FALSE < TRUE
Ведь у нас как раз тип операнда 1 - boolean (true/false).
4. Исходя из таблицы, строка "admin" преобразуется в булев тип. Что на выходе даст true.
5. Получаем условия следующего вида:
а) при существующей сессиии
PHP
1
if(false == true) { ..... }
б) при не существующей сессии или сессии с "пустым" значением
PHP
1
if(true == true) { ..... }
А решение - простое до невозможности, просто убрать восклицательный знак.. Уж не буду говорить, что лучше сначала проверить значение на существование
0
0 / 0 / 1
Регистрация: 16.09.2013
Сообщений: 16
24.09.2013, 23:44  [ТС]
Цитата Сообщение от KOPOJI Посмотреть сообщение
и о чем мы думаем при составлении такого?
Что произойдет здесь:
1. Т.к. стоит символ ! (отрицание) перед $_SESSION['login'], то ее значение приведется к булеву типу и изменится на противоположное (т.е., если там есть какое-то непустое значение, то приведется в true, а затем изменится на false). Про пустые значения при приведении к булеву можете почитать здесь
2. Таким образом, первым аргументом может быть только true или false. True - если значение "пустое", False - если там что-то есть.
3. Дальше у нас идет сравнение булева со строкой. Идем сюда http://www.php.net/manual/ru/l... arison.php, смотрим вторую таблицу. Видим "нашу" строку
Тип операнда 1Тип операнда 2Результат
bool или nullчто угодноПреобразуется в bool, FALSE < TRUE
Ведь у нас как раз тип операнда 1 - boolean (true/false).
4. Исходя из таблицы, строка "admin" преобразуется в булев тип. Что на выходе даст true.
5. Получаем условия следующего вида:
а) при существующей сессиии
PHP
1
if(false == true) { ..... }
б) при не существующей сессии или сессии с "пустым" значением
PHP
1
if(true == true) { ..... }
А решение - простое до невозможности, просто убрать восклицательный знак.. Уж не буду говорить, что лучше сначала проверить значение на существование
но если просто убрать ! то тогда просто отображается страница всем желающим независимо имеют ли они сессию или нет, или я опять что-то не понял
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
24.09.2013, 23:47
PHP
1
2
3
4
5
if( !isset($_SESSION['login']) || $_SESSION['login'] != 'admin' )
{
    header(.....);
    exit;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.09.2013, 23:47
Помогаю со студенческими работами здесь

Вход в админку в роутере
Вношу изменения в движок, выдачу админ-панели формирую в роутере. По умолчанию роутер берет контроллер с именем Main, но здесь я поставил...

Отсутствует вход в админку
Люди, спасите! Нет входа в админку на работающем сайте (просто белое поле и никаикх сообщений о возможных ошибках). Сайту всего несколько...

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

Вход в админку Joomla
Доброго времени суток. Имеются проблемы со входом в админку Joomla. Вот уже несколько дней не могу туда зайти. Адрес сайта -...

Не могу найти вход в админку
Здравствуйте, купил сайт. Он написан на yii фреймворке, от него есть все доступы и база данных, но человек не скинул адрес входа в админку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru