Вопрос № 79542: Здравствуйте товарищи эксперты.
Немного стыдно мне обращаться с подобным вопросом, он наверное довольно елементарный, но всё-таки... как говорится не стыдно не знать, стыдно не учиться.
Итак, суть в том, что мне в админке нужно сделать автори...
Вопрос № 79.542
Здравствуйте товарищи эксперты.
Немного стыдно мне обращаться с подобным вопросом, он наверное довольно елементарный, но всё-таки... как говорится не стыдно не знать, стыдно не учиться.
Итак, суть в том, что мне в админке нужно сделать авторизацию. И проблема в том, что вводимые данные не сохраняются. Т.е. вводятся данные в форму, и если всё верно, то открывается страница admin.phtml. Но внутри этой страницы тоже есть сслыки, при нажатии на которые в адресной строке имя файла может принять вид: admin.phtml?cat=six или что то подобное. При этом введённые данные не сохрянются, т.е. значения переменных, вводимых в форме и хранящих логин и пароль администратора теряют своё значение и опять появляется
форма для ввода логина и пароля. Код я привел в приложении.
Сами логин и пароль хранятся в некоем файле var.dat
З.Ы. И в моём коде в проверке логина и пароля стоит слгическое ИЛИ (||) вместо логического И (&&). Но у меня почемуто если поставить два амперсента, становится не важно ввел т правильно только логин или только пароль. Это глюк или я очень туплю, т.к. || - это вроде логическое ИЛИ, а в данном коде оно работает как И.
Отвечает: Liw
Здравствуйте, Стас Тельнов/[анти]КИЛЛЕР!
Для того чтобы хранить логин/пароль/ещё что то используйте сессии или куки.
Пример в приложении:
Приложение:
Ответ отправил: Liw (статус: 1-ый класс)
Ответ отправлен: 23.03.2007, 20:25 Оценка за ответ: 5 Комментарий оценки: Большое спасибо. Я пробовал использовать сессии, но не понял как они работают, теперь понял :)) Осталась маленьая проблемка правда :(( На мини-форуме спросил, если вас не затруднит, не могли бы посмотреть и подсказать...
Отвечает: Емельянов Данил Юрьевич
Здравствуйте, Стас Тельнов/[анти]КИЛЛЕР!
К сказанному выше мне добавить нечего, только разве пример работы с Cookie. Здесь я создал 4 файла: admin.phtml ; var.dat ; page1.php(обычная страница); page2.php(страница с более ужесточенной проверкой Cookie).
При желании можно установить время хранения Cookie.
Приложение:
--------- Жить хорошо, а хорошо жить еще лучше!
Ответ отправил: Емельянов Данил Юрьевич (статус: 1-ый класс)
Ответ отправлен: 24.03.2007, 08:06 Оценка за ответ: 4 Комментарий оценки: Спасибо, я знаю как работают кукиесы, но в данном случае мне они не подходят, т.к. у некоторых пользователей они могут быть отключены, а я хочу чтобы скрипт был универсальный.
Отвечает: Молодкин Евгений
Здравствуйте, Стас Тельнов/[анти]КИЛЛЕР!
Советую Вам использовать сессии. Т.е. когда проверка логина и пароля успешна - в сессию записывается какое-то значение, допустим логин. Делается это так:
session_start(); //эта строчка должна быть В САМОМ НАЧАЛЕ скрипта, сразу после <?php
потом проверяете, если isset($_SESSION['login']) == true (в условии if(..) "== true" писать не обязательно, достаточно if(isset($_SESSION)) ) - выводите защищенное содержимое, если нет - либо форму авторизации, либо, если пользователь ввел верные логин и пароль, устанавливаете $_SESSION['login'] = $agmlg и выводите содержимое.
Вобщем суть, я думаю понятна. Теперь с логическими И и ИЛИ. Знак ! - это логическое НЕ. А вот правило из мат. логики: !(A && B) = (!A || !B)
или наоборот: !(A || B) = (!A && !B) Думаю, этого достаточно )
Ответ отправил: Молодкин Евгений (статус: 1-ый класс)
Ответ отправлен: 24.03.2007, 09:26 Оценка за ответ: 2 Комментарий оценки: Спасибо конечно, но вы немного опоздали, предыдущий эксперт уже ответил на этот вопрос по сессиям. Аглебру логики я знаю, именно поэтому и спросил, что знак ИЛИ работал как И. (на это предыдущий эксперт мне тоже уже ответил)
Отвечает: PVS
Здравствуйте, Стас Тельнов/[анти]КИЛЛЕР!
Про сессии и cookies Вам уже написали. Хочу только добавить о логике: ВСЕ У ВАС В ПОРЯДКЕ! И вполне логично: если ошибка в имени пользователя ИЛИ пароле то вход выполнять нельзя. Если поставить И, то получается что условием ошибки есть одновременно неправильное имя и неправильный пароль. Получается что при неправильном вводе пароля пользователь все равно входит в админку. Или пользователь не с тем именем, но с тем же паролем может попасть в админку.
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 26.03.2007, 10:07