Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 621
от 28.03.2007, 20:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 413, Экспертов: 61
В номере:Вопросов: 1, Ответов: 4


Вопрос № 79542: Здравствуйте товарищи эксперты. Немного стыдно мне обращаться с подобным вопросом, он наверное довольно елементарный, но всё-таки... как говорится не стыдно не знать, стыдно не учиться. Итак, суть в том, что мне в админке нужно сделать автори...

Вопрос № 79.542
Здравствуйте товарищи эксперты.
Немного стыдно мне обращаться с подобным вопросом, он наверное довольно елементарный, но всё-таки... как говорится не стыдно не знать, стыдно не учиться.
Итак, суть в том, что мне в админке нужно сделать авторизацию. И проблема в том, что вводимые данные не сохраняются. Т.е. вводятся данные в форму, и если всё верно, то открывается страница admin.phtml. Но внутри этой страницы тоже есть сслыки, при нажатии на которые в адресной строке имя файла может принять вид: admin.phtml?cat=six или что то подобное. При этом введённые данные не сохрянются, т.е. значения переменных, вводимых в форме и хранящих логин и пароль администратора теряют своё значение и опять появляется форма для ввода логина и пароля. Код я привел в приложении.
Сами логин и пароль хранятся в некоем файле var.dat

З.Ы. И в моём коде в проверке логина и пароля стоит слгическое ИЛИ (||) вместо логического И (&&). Но у меня почемуто если поставить два амперсента, становится не важно ввел т правильно только логин или только пароль. Это глюк или я очень туплю, т.к. || - это вроде логическое ИЛИ, а в данном коде оно работает как И.

Приложение:

Отправлен: 23.03.2007, 19:34
Вопрос задал: Стас Тельнов/[анти]КИЛЛЕР (статус: 1-ый класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: support@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.46 от 18.03.2007
Яндекс Rambler's Top100

В избранное