Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> страница администрирования, показывать по паролю 
:(
    Опции темы
Gold Dragon
  Дата 12.1.2005, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Помогите понять логику

при первом открытии страницы выпадает поле для ввода пароля
Код

if (!isset($_POST["pas"])){
    echo"
    <form action=\"admin.php\" method=\"post\">
    Введите пароль: <input name=\"pas\" type=\"password\">
    <input name=\"adm\" type=\"submit\" value=\"ОК\">
    </form>
    ";
}


- если не правитьно - над формой пишится "Ошибка" и опять поле для ввода пароля
(здесь не совсем понимаю как сделать чтоб открылась снова эта форма)

- если правильно - появляются допустим три ссылки
Код

else{
if ($_POST["pas"]==$PAS_ADM){
......
<a href=\"adm_form.php?adm=1\">Ссылка 1</a>
<a href=\"adm_form.php?adm=2\">Ссылка 2</a>
<a href=\"adm_form.php?adm=3\">Ссылка 3</a>
.......
}


- каждая открывает своё поле для ввода

Код

if ($_GET['adm']==1)
....
if ($_GET['adm']==2)
....
if ($_GET['adm']==3)
....


(и вот здесь как организовать чтоб я миную ввод пароля не смог зайти по ссылке http://adm_form.php?adm=х)

Если не трудно, опишите логику как это вообще организовано.




--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Mont
Дата 12.1.2005, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Vingrad developer
Сообщений: 274
Регистрация: 13.11.2004
Где: Altay

Репутация: 8
Всего: 12



Зарегистрируй сессию для админа при удачной проверке пароля.
и потом проверь установленна ли сессия, если нет тогда опять форма иначе показывай страницу.


--------------------
"Если однажды Вдруг
Меня не окажется вовсе
в заповедной заветной тарелке
Твоего праведного сновидения
Знай - Неуловимые мстители настигли меня."
© Егор Летов
PM MAIL ICQ   Вверх
Gold Dragon
Дата 12.1.2005, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



То есть мне изночально проверять сессию? А не if (!isset($_POST["pas"])){


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 12.1.2005, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Red Dragon

Цитата(Red @ 12.1.2005, 14:11)
if (!isset($_POST["pas"])){

Проверять тогда, когда к тебе данные с формы авторизации приходят...
Во всех других случаях проверять сессию.
Ознакомься вот с этой статьей, дабы сразу не допускать ошибок: http://detail.phpclub.ru/article/sessions
PM ICQ   Вверх
lovermann
Дата 16.1.2005, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 28.12.2004
Где: Прага

Репутация: 1
Всего: 8



Я бы сделал вот так:
Форма в login.php:
Код

<form action="kontrola.php?login=".$login."&pass=".$heslo method="POST">
<table border="0" cellpadding="4" cellspacing="0">
<tr><td>Логин:</td><td><input name="login" type="text" length="10"></td></tr>
<tr><td>Пароль:</td><td><input name="pass" type="text" length="10"></td></tr>
<tr><td rowspan="2"><input type="submit" type="submit" value="Login"></td></tr>
</table>
</form>


kontrola.php
Код

<?
        if ($_GET['login']=='admin' AND $_GET['pass']=='admin') {
          session_start();
          // инициализация перем. user_id, которая будет жить в сессии
          $_SESSION['user_id']=$login;
          header ("Location: members.php");
          exit;
        } else {header ("Location: login.php"); }
?>


Это сообщение отредактировал(а) lovermann - 17.1.2005, 02:09
PM WWW ICQ   Вверх
Mal Hack
Дата 16.1.2005, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(lovermann @ 16.1.2005, 15:25)
if ($_GET['login']==$line[1] AND $_GET['pass']==$line[2]) {

А может все-таки POST ? smile
PM ICQ   Вверх
lovermann
Дата 16.1.2005, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 28.12.2004
Где: Прага

Репутация: 1
Всего: 8



Извините, скрипт был для проверки логина и пароля по базе -- я его подправил, но не всё вырезал (недовырезал $line[]), теперь всё ОК.

Mal Hack, при чём тут POST? Скрипт получает параметры в адресной строке -- он их читает, обрабатывает и в зависимости от правильности, редиректит либо обратно, либо на мемебер.пхп..
PM WWW ICQ   Вверх
Mal Hack
Дата 16.1.2005, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



lovermann
передавать логин и пароль через адресную строку, простите, это одна из самых серьезных дыр в безопаснсоти...
Данные логина и пароля получаются с формы... Что у вас выше и написанно... И там метод POST
PM ICQ   Вверх
Kefir
Дата 16.1.2005, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 13
Всего: 87



в общем общая логика тебе понятна.
по порядку:
1. session_start().
2. проверяем логин.
3. если логин есть -> отображаем сраницу.
4. если нет -> показываем логин форму.

вот. вроде всё.
PM MAIL WWW Skype   Вверх
lovermann
Дата 16.1.2005, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 28.12.2004
Где: Прага

Репутация: 1
Всего: 8



Пардон, не углядел. Конечно же $_POST, а не $_GET.

Ну, а про то, что в начале каждой страницы нужно писать
Код

<? session_start();
if (empty($_SESSION['user_id'])) { header ("Location: login.php"); exit;}
?>


я не написал, потому что это и так ясно.

Это сообщение отредактировал(а) lovermann - 16.1.2005, 18:47
PM WWW ICQ   Вверх
IZ@TOP
Дата 17.1.2005, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(lovermann @ 16.1.2005, 19:15)
Ну, а про то, что в начале каждой страницы нужно писать

Код
Код
<? session_start();
if (empty($_SESSION['user_id'])) { header ("Location: login.php"); exit;}
?>

я не написал, потому что это и так ясно.

А может потом стоит проверить Хеш пароля из кук, желательно чтобы он туда был записан еще раз шифрованный, чтобы при утере хеша нельзя было применить перебор.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
lovermann
Дата 17.1.2005, 02:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 28.12.2004
Где: Прага

Репутация: 1
Всего: 8



А где ты увидел, что в куке пароль хранится? smile


P.S. Под словосочетанием "каждой страницы" я имел ввиду страницы запароленной зоны.

Это сообщение отредактировал(а) lovermann - 17.1.2005, 02:16
PM WWW ICQ   Вверх
Sardar
Дата 17.1.2005, 02:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 4
Всего: 317



Я всю админовку делаю через одну точку входа index.php, всё остальное закрыто. Перед инклюдом проверяешь сессию. Если не прошло, то отсылаешь куку с параметром запрашиваемой страницы(что бы вернутся назад) и генеришь форму с логин/паролем. Никаких траблов с путями и т.п.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Gold Dragon
Дата 17.1.2005, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Сначало всё было понятно, но как вы начали спорить друг с другом, запутался. smile

Может кто подведёт итог


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Mont
Дата 17.1.2005, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Vingrad developer
Сообщений: 274
Регистрация: 13.11.2004
Где: Altay

Репутация: 8
Всего: 12



Код

session_start();
........
elseif  ($_POST["pas"]==$PAS_ADM){
session_register('_SESSION');
$_SESSION['user_id']= 'admin';
<a href=\"adm_form.php?adm=1\">Ссылка 1</a>
<a href=\"adm_form.php?adm=2\">Ссылка 2</a>
<a href=\"adm_form.php?adm=3\">Ссылка 3</a>
.......
}



- каждая открывает своё поле для ввода


Код  

if ($_GET['adm']==1 and $_SESSION['user_id']== 'admin'){
....
}
else {
header ("Location: login.php"); exit;
}
if ($_GET['adm']==2 and $_SESSION['user_id']== 'admin'){
....
}
else {
header ("Location: login.php"); exit;
}
if ($_GET['adm']==3 and $_SESSION['user_id']== 'admin'){
....
}
else {
header ("Location: login.php"); exit;
}


Я так думаю ©Мимино smile


--------------------
"Если однажды Вдруг
Меня не окажется вовсе
в заповедной заветной тарелке
Твоего праведного сновидения
Знай - Неуловимые мстители настигли меня."
© Егор Летов
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0652 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.