Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
11 / 11 / 3
Регистрация: 19.04.2014
Сообщений: 139

Почему выдаётся ошибка

22.04.2016, 17:47. Показов 705. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем дня!

Ситуация такая: есть защищённая страница, на которой проверяется залогинен пользователь или нет и если не залогинен то его редиректит на страницу с формой входа. На самой защищённой странице выводится имя пользователя (из переменной сессии, типа "Привет, Маринка!"). Тоесть: незалогиненный пользователь заходит на защищённую страницу и его редиректит на страницу входа. Всё работает на денвере без проблем, никаких ошибок не выдаётся (в php.ini E_ALL). А вот на сервере в еррор-логе пишет что на защищённой странице переменная сессии (имя пользователя) не определена. Но ведь пользователь то не залогинен, значит эта страница даже не подгружается. Не могу понять почему выдаётся ошибка.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.04.2016, 17:47
Ответы с готовыми решениями:

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

Почему выдаётся ошибка. В классе создан класс в котором объявлен массив
У меня ошибка(Ошибка 1 error C2536: image::image::pixels: нельзя задавать явный инициализатор для...

Для чего нужен возвращаемый тип в перегрузке ввода >> и почему без него него выдаётся ошибка?
Для чего нужен возвращаемый тип в перегрузке ввода >>, какую роль он выполняет что без него него выдаётся ошибка. cin объект istream...

13
 Аватар для 0xD61C90
15 / 15 / 13
Регистрация: 14.03.2016
Сообщений: 78
22.04.2016, 18:50
Цитата Сообщение от Marinka92 Посмотреть сообщение
на которой проверяется залогинен пользователь или нет
Как проверяется то?

PHP
1
2
3
4
5
<?php
 
...
 
?>
0
11 / 11 / 3
Регистрация: 19.04.2014
Сообщений: 139
23.04.2016, 13:12  [ТС]
В форме входа вводятся логин и пароль, которые хранятся в сессии. На защищённой странице проверяется существуют ли в сессии переменные login и password, а затем сверяются с данными в базе. Если всё ок, тогда защищённая страница показывается пользователю, иначе - редирект на страницу входа.
0
 Аватар для maruo
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
23.04.2016, 13:40
Marinka92, Ну это как то странно зачем в сессии хранить логин и пароль, когда можно сделать примитивно просто и безопасней, Если пользователь прошел авторизацию значит объявляем глобальную переменную
PHP
1
$_SESSION['auth'] = 'y';
И проверяем на странице
PHP
1
2
if(empty($_SESSION['auth'])){...}else{...}//или так
if($_SESSION['auth'] == 'y'){...}else{...}
Если же вы хотите по своему, то приложите ваш код след постом, нужно смотреть
0
 Аватар для dukesov
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
23.04.2016, 16:43
Marinka92, у меня на такое дело есть права. Права ,логин и хэш лежат в куках.
PHP
1
2
3
if ($_COOKIE['R']<"40"){
header("Location: /login.php");
}
$_COOKIE['R'] - права пользователя. Если права меньше 40 то кидает на страницу авторизации. Ну и еще доп проверка, если права выше, то есть доступ к другим страницам.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
23.04.2016, 17:42
Цитата Сообщение от dukesov Посмотреть сообщение
$_COOKIE['R'] - права пользователя. Если права меньше 40 то кидает на страницу авторизации. Ну и еще доп проверка, если права выше, то есть доступ к другим страницам.
Это не просто дыра, это огромный кратер в системе безопасности
1
 Аватар для dukesov
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
23.04.2016, 18:02
Цитата Сообщение от Jewbacabra Посмотреть сообщение
дыра
То, что пользователь может подменить куки? Но его не пустит, пока хэш не подберет.
PHP
1
2
3
4
5
6
7
8
9
10
$id = $_COOKIE['I'];
$hash = $_COOKIE['P'];
 
$query = mysql_query("SELECT * FROM `login` WHERE `user_id` = '$id' AND `hash`='$hash' LIMIT 1");
$res = mysql_fetch_array($query);
 
if($hash != $res['hash']){
    header("Location: /login.php");
    exit;
}
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
23.04.2016, 18:08
Цитата Сообщение от dukesov Посмотреть сообщение
Но его не пустит, пока хэш не подберет.
А если он уже залогинен и полезет на страницу, куда ему нельзя, в куках кроме хеша ничего быть не должно, разве что за исключением каких-то мелочей, не влияющих на функциональность.
0
 Аватар для dukesov
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
23.04.2016, 18:10
Jewbacabra, работает то, что Вы назвали кратер в системе безопасности.
Я не особо силен в php, не подскажете как изменить?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
23.04.2016, 18:12
Цитата Сообщение от dukesov Посмотреть сообщение
не подскажете как изменить?
хранить права пользователей только на сервере, например создать для этого дополнительные таблицы
0
 Аватар для dukesov
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
23.04.2016, 18:19
Jewbacabra, по логину проверять, и если разрешено то пускать?

Я примерно представляю как это реализовать. Поправьте если не так:
Таблица privilege.
Колонки S_Admin | Admin | Moder | User.
Под ними прописаны id пользователей.
То есть пользователь с id 1 (права супер админа) будет прописан во всех колонках?

Проверяем есть ли у юзера права S_Admin, если есть пускаем, нет, говорим нет прав.
0
 Аватар для maruo
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
23.04.2016, 18:24
dukesov, таблица пользователей
id|name|login|pass|role|......
выбираем пользователя
SQL
1
SELECT * FROM USER WHERE login="$login"
Делаем проверку
PHP
1
2
3
4
5
if($result['role'] == 1){
echo 'Вы супер админ';
}elseif($result['role'] == 2){
echo 'Вы модератор';
}elseif(...){...}
1
 Аватар для dukesov
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
23.04.2016, 18:28
maruo, да... Вроде просто, но что то не додумался проверку делать по таблице... Права то и так прописаны...
0
11 / 11 / 3
Регистрация: 19.04.2014
Сообщений: 139
27.04.2016, 18:03  [ТС]
С ошибкой разобралась. Как оказалось никакой мистики - просто блондинка

p.s. Храню логин и пароль в файле... Доступ к файлу закрыт через .htaccess
Логин зашифрован самописной функцией, а пароль - захеширован. А в файле храню потому что проект маленький и базу данных построила на файлах.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.04.2016, 18:03
Помогаю со студенческими работами здесь

Почему выдаётся expected ';', ',' or ')' before '&' token?
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; float MinMax (float a, float b, float &amp;max ) { if ( a&gt;b ) { max = a; return b; } ...

Выдаётся ошибка windows 7
При включении компьютера каждый раз возникает ошибка &quot;не удалось прочитать правила транслитерации&quot; Как устранить эту ошибку? ...

При выполнении программы выдаётся ошибка
Дано следующие задание. Вычислить значение числа π, учитывая в формуле значения слагаемых, по абсолютной величине большие или равные...

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

При попытке переименовать textBox1 выдаётся ошибка
Добрый вечер. Пытаюсь переименовать textBox1 на форме (справа, свойство (Name)), при попытке вылетает ошибка &quot;Недопустимое значение...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru