Hapson
Ошибок быть не должно. Вставляйте этот код в "шапку" файла и все будет работать. Данные GET параметра можете установить конечно же свои. И файл по своему назвать ) Ошибка может быть в случае если вы отправляете заголовок после любого вывода в браузер либо в файле присутствует BOM...
Понятно, спасибо.
Ну да, ошибка когда уже что-то выводилось (Добавление)
Так что лучше загонять в массив сессии? id или логин-пароль?
Безопасно ли отдавать в сессию логин-пароль?
$auth=mysql_query("select id, login, password, status from `". DB_PREF ."users` where `login` = '".$user_login."' and `password` = '".$user_password."'");
[quote=Мелкий][quote=Hapson]
Вы НЕ авторизованы, страница открыта из кэша браузера.[/quote]
Да, действительно.
[quote=Мелкий]
Hapson пишет:
Попробуйте что-нибудь сделать и получите отказ доступа.
Там пусто - делать нечего было
Вставил тупо ссылку <a href="/admin/index.php">Обновить</a>
И по нажатию вылет из админки на форму авторизации.
Спасибо.
наверно и выборку надо делать перечисляя все поля, пусть их будет даже больше 20, вместо того чтобы использовать *
Я ж учусь...
Этот косяк я уже понял (Добавление)
Уффффф!!!!!
Я уже ничего не понимаю....
Почему после выхода из админки и нажатия кнопки назад в браузере, я снова авторизован???
Приведу еще раз файлы, немного измененные.
Входим в админку
$auth=mysql_query("select id, login, password, status from `". DB_PREF ."users` where `login` = '".$user_login."' and `password` = '".$user_password."'");
<p><?php echo$user_status=1 ? 'Статус равен 1':'Статус не равен 1';?></p>
</div>
<div class="logo">
</div>
<div class="top_menu">
</div>
</div>
<div class="main_container">
<div class="left">
</div>
<div class="content">
</div>
</div>
</div>
<div class="footer">
</div>
</body>
</html>
Здесь есть кнопка выхода: <a href="http://test/admin/index.php?exit=ok">Выйти</a>
Нажав на эту кнопку, мы снова попадаем на начало index.php далее в auth.php, где по идее юзер должен быть разлогинен.
Так оно и происходит. Но если нажать назад в браузере, то я снова в админке! Как так?
Короче чета я намутил с авторизацией... кучу файлов понаподключал, теперь что-то сам ничего не пойму... (Добавление)
Как оно вообще должно быть?
пользователь открывает файл site.ru/admin/index.php
сразу идет проверка на присутствие в сессии id
если он есть и статус юзера с этим id равен 1, то показываем админку
если id есть но статус пользователя с этим id не равен 1, то редирект на главную
если id в сессии нет, то идем дальше и проверяем ввел ли пользователь логин-пароль в форму
если ввел, то проверяем, есть ли эта пара в базе
если есть, то смотрим какой статус у юзера с данной парой логин-пароль
если статус 1, то показываем админку
если статус не 1, то редирект на главную
в шаблоне админки сделать ссылку на файл exit.php, в котором будет unset($_SESSION['id']) и редирект на... форму авторизации например.
Правильно?
То есть нужны 4 файла:
index.php - через него вход и к нему подключаются остальные
auth.php - файл где проверяется наличие id в сессии и логин-пароль из формы
index_adm.php - шаблон админки
exit.php - удаление id из сессии
Так всего много)
Логин и пароль желательно передать, ведь на основании этого можно авторизоваться. Я думаю взломать можно любой сайт, дело за профессионалом.
После выхода с админки нужно завершить сессию, тогда нажимая в браузере назад вы не сможете войти в админку.
Ну там же смысл в чем.
Сначала проверяется, есть ли в сессии "id" пользователя. Если есть, то из базы выбираются все данные этого "id". То есть, если "id" = 5, то из базы выбираются все данные на пользователя с "id" = 5 (логин, пароль, статус и id).
По задумке есть 4 статуса у пользователей: 0 - гость, 1 - админ, 2 - модер, 3 - юзер.
Далее проверяется, если в выбранных данных статус равен 1, значит это админ, можно показать админку.
Если в сессии "id" не было, тогда из базы выбираются данные согласно паре логин-пароль, которые ввел пришедший юзер.
Если в этих данных статус пользователя = 1, то значит это админ, если нет, значит не админ - отправляем юзера на главную, ему сюда нельзя.
Если пользователь нажал кнопку выход (<a href="?exit=ok">Выйти</a>) в админке, тогда удаляется "id" из сессии и уничтожается сессия.
Но почему-то при нажатии кнопки назад в браузере, сессия опять жива и "id" админа опять существует в сессии. (Добавление)
Master_pascal пишет:
без куки и сессий регистрацию не сделаешь. гг , а зачем ты страницу ,где кнопка выйти, показал?
показывай чо там у тебя в exit.php (Добавление)
тебе надо создать exit.php и сделать unset($_SESSION['login'])
Нету exip.php.
В админке есть <a href="?exit=ok">Выйти</a>
а в файле авторизации
А ну да, то есть конфликта здесь никакого не будет.
Просто можно будет уже не думать, откуда попал на тот или иной файл - из фронта или из админки, просто везде писать ROOT.
Спасибо!
Понятно, спасибо.
Как же тогда быть с админкой... Вход в админку через другой index.php, который лежит в корень/admin/index.php (Добавление)
Может прописать константу в config.php, так как он подключен к обоим index.php и лежит в корне
нет неправильно
это будет путь от корня до файла в котором определяется константа
если это выполнить в index.php лежащем в корне тогда да...
Ага, то есть, если я определю эту константу в корне (в файле config.php), то я смогу в любом файле потом писать... ну например в файле шаблона хочу что-то подключить:
1. в config.php (в корне сайта) прописал define('ROOT', dirname(__FILE__).'/');
2. файл шаблона лежит корень/template/home/index.php
3. а то что хочу подключить к нему (например function.php) лежит в корень/inc/function.php
И чтобы включить function.php в index.php, я в index.php пишу