Модераторы: 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   Вверх
lovermann
Дата 17.1.2005, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



1) Делаешь форму для ввода логина и пароля. (она у тебя уже есть).
2) Если логин и пароль верные -- начинаешь сессию и присваиваешь какой-либо сессионной переменной какое-то значение (см. мой kontrola.php, только вместо ГЕТ -- ПОСТ)
3) В начале каждой страницы закрытой зоны проверяешь, установлена ли эта сессионная переменная. Если установлена - отображаешь, что надо, если нет, пуляешь на страницу с формой для входа (см. моё сообщение от 16.1.2005, 18:15).


PM WWW ICQ   Вверх
Gold Dragon
Дата 17.1.2005, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Всё понял, всем большое спасибо..


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


Опытный
**


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

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



Я свои мысли последней инстанцией не делаю -- кому есть, что сказать/подправить/исправить -- пожалуйста. Я ведь сам только учусь.
PM WWW ICQ   Вверх
Gold Dragon
Дата 17.1.2005, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Самое лучшее это выложить готовый код с описанием, т.е. файл такой-то, делает то и то... Я что-то делаю, вроде всё работает, но столько уже нагородил, никакой оптимизации кода smile


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


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



Red Dragon
значешь я че понял - вот начинаешь писать скрипт - так не хочется писать грамотно, лишь бы побыстрее, а потом, когда приходит время оптимизации - нет ничего хуже!


--------------------
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 17.1.2005, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Вот и хочу, чтоб кто-нибудь выложил шаблон.... smile а то у меня такой карявый код получается, что сам путаюсь


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


Бегун
****


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

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



Довольно кривой пример, но реально поставлен и запущен smile
Ниже кусок кода из начала index.php - единственная точка входа. Пароль лежит в файле в директории защищённой апачем, так захотел закачик, дабы не было траблов с юзерами(суеверие), всё остальное в БД. Шаблонизаторами не пользуюсь ибо вёрстка тоже моя и ни кем в будущем вроде менятся не будет. Расставил коментарии.
Код
//все инклюды проверяют эту константу, если её нет, то посылают юзера на вход.
define("PROCESS", true);
require_once("./include/config.php");

ob_start("ob_gzhandler"); //по умолчанию не включена, потому врубаем
session_set_cookie_params(0); //cookie current session only
session_start();
//check if we are logged in
if(!isset($_SESSION['logged_in'])||$_SESSION['logged_in']!=true) { //если не залогинен
 include_once "./templates/login.inc"; //здесь несколько функций выдающих формы входа и сообщений
 if (!isset($_POST['login_user'])||!isset($_POST['login_pass'])) { //если не пришли данные
   login_make_form(false); //например форма входа
   exit();
 }
 ignore_user_abort(true); //let us do the work without problems...
//запретить одновременный доступ с двух компов
 if(file_exists("./sec/.tempdb")&&(time()-filemtime("./sec/.tempdb"))<$login_time_out) { //1 hour
    $fp=fopen("./sec/.tempdb","rb"); //для этого юзаем файл - лок
    @flock($fp, LOCK_SH);
    $ipc=trim(fread($fp, 1024));
    fclose($fp);
    if($ipc!=$_SERVER['REMOTE_ADDR']) {
       session_destroy();
       login_message_only_one();
       exit();
    }
 }
 sleep(3); //что бы брут форсом не брали, простому юзеру ничего от 3 сек. не будет
 if(!file_exists("./sec/pass.db")) exit("Critical Error: can't find password DB");
 $fl=file("./sec/pass.db"); //да, юзер в файле, не надо меня ругать =)
 if(trim($fl[0])==""||trim($fl[1])=="") exit("Critical Error: password file is damaged");
 if(trim($_POST['login_user'])==trim($fl[0]) && md5(trim($_POST['login_pass']))== trim($fl[1])) {
    $_SESSION['logged_in']=true;
    $_SESSION['logged_at']=time();

    $fp=fopen("./sec/.tempdb","wb");
    @flock($fp, LOCK_EX);
    fwrite($fp,$_SERVER['REMOTE_ADDR']);
    fclose($fp);

    login_message_logged_in(); //post data flush
 } else login_make_form(true);
 ob_end_flush(); //flush all messages en forms
 exit();
}

//обновим лок, этакая реализация семафоров =)
$fp=fopen("./sec/.tempdb","rb");
@flock($fp, LOCK_SH);
$ipc=trim(fread($fp, 1024));
fclose($fp);
if($ipc!=$_SERVER['REMOTE_ADDR']) { //you was to long away...
  session_destroy();
  include_once "./templates/login.inc";
  login_message_only_one();
  ob_end_flush();
  exit();
}

//ну а дальше открываем соединение с БД и инклюдим запрашиваемый файл



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


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



вот что мне отвечает на код
Код

if ($dataRight)
{echo "<b style='color:green;'>Авторизация прошла успешно!</b><br>";
session_start();
$_SESSION['user_login'] = $_POST["login"];
header ("Location: Admin.php");
exit;
}


Цитата
Warning: session_start() [function.session-start]: open(/tmp\sess_ab121f77f2ac1fca7ae7057412cb91cd, O_RDWR) failed: No such file or directory (2) in H:\home\alx\www\portfolio\scripts\php\voting\index.php on line 77

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at H:\home\alx\www\portfolio\scripts\php\voting\index.php:7) in H:\home\alx\www\portfolio\scripts\php\voting\index.php on line 77

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at H:\home\alx\www\portfolio\scripts\php\voting\index.php:7) in H:\home\alx\www\portfolio\scripts\php\voting\index.php on line 77

Warning: Cannot modify header information - headers already sent by (output started at H:\home\alx\www\portfolio\scripts\php\voting\index.php:7) in H:\home\alx\www\portfolio\scripts\php\voting\index.php on line 79

Warning: Unknown(): open(/tmp\sess_ab121f77f2ac1fca7ae7057412cb91cd, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0


smile


--------------------
PM MAIL WWW ICQ   Вверх
Irokez
Дата 18.1.2005, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

Репутация: 22
Всего: 53



1) неправильно прописана директория где должны храниться файлы сессии
2) посылаешь хедеры после вывода в браузер
PM   Вверх
Alx
Дата 19.1.2005, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



Цитата(Irokez @ 18.1.2005, 22:18)
1) неправильно прописана директория где должны храниться файлы сессии

а где их вообще прописывать? вот весь код, который связан с этой ерундой я показал... остально не касается, их ещё надо где-то прописывать?


--------------------
PM MAIL WWW ICQ   Вверх
Irokez
Дата 19.1.2005, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

Репутация: 22
Всего: 53



Alx
создай директорию или укажи существующую, к примеру c:\temp (винда), /tmp (*никс), потом ее прописываешь в конфигах пхп:
session.save_path = c:\temp
session.save_path = /tmp
или можешь в ходе работы скрипта:
session_save_path('c:\temp') , но это прописываешь до session_start(), т.е. иницилизации сессии, но лучше первый вариант - прописать в конфигах
PM   Вверх
Alx
Дата 20.1.2005, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



Цитата(Irokez @ 18.1.2005, 22:18)
2) посылаешь хедеры после вывода в браузер

а что делать? тогда придётся через JS. там же вот как - в одно м случае echo в определённом месте, в другом - переход.


--------------------
PM MAIL WWW ICQ   Вверх
The MASTER
Дата 20.1.2005, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Old master)
**


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

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



Я здесь выкладывал небольшой скрипт авторизации но IZATOP к сожалению удалил, но он у меня остался вот:

Код

<?php
if (isset($login) == false) { $login = ""; }
if (isset($password) == false) { $password = ""; }
$v = "<center><br><b><font color=#7F9DB9>Script Writen by MASTER ©2005</font></b>";
if (
$login == "1" &&  ##здесь логин
$password == "1" ##здесь пароль
)
(
print "<br><center>Пароль введён правильно</center>");
else {
echo "<br><br><center>
<table cellspacing=4 cellpadding=3 width=300 id='login'>
<tr><td colspan=2>
<form action='index.php' method=post>
<tr><td colspan=2>Введите Логин: </td>
<td align=right>
<input name='login' type=text align=right style='width:150' id='input'></td></tr>
<br>
<tr><td colspan=2>Введите пароль: </td><td align=right>
<input name='password' type=password align=right style='width:150' id='input'></td></tr>
<br>
<tr><td colspan=2><input type='submit' value='Вход' style='width:100' style='height:22' id='input'>
</td></tr></td></tr></table></center>
</body>
</html>";}
echo "$v";
?>

PM MAIL WWW ICQ   Вверх
penizillin
Дата 21.1.2005, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



замечательный скрипт. "в топку!" (забыл, чье)
PM MAIL ICQ   Вверх
Gold Dragon
Дата 21.1.2005, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Ну и код smile


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


Old master)
**


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

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



А что?
penizillin Спасибо, но не совсем понял про что ты сказал...
PM MAIL WWW ICQ   Вверх
penizillin
Дата 21.1.2005, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код
$boolSarcasm = true;

PM MAIL ICQ   Вверх
IZ@TOP
Дата 23.1.2005, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



The MASTER, он имел ввиду что этот скрипт настолько "хорош", что его надо на всеобщее обозрение всем новичкам поставить в разделе "как делать НЕ надо" smile


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

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


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


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

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



Вот мой код
Код

<?php
session_start();
$pasw_adm = "1111";// это пароль, я его храню в отдельном файле или базе

// уничтожение сессии
if(isset($_GET['adm'])){if($_GET['adm']==0){unset($_SESSION['pas']);}}


if (isset($_POST['form']))//если были введены данные
{
   if($_POST['pasw']==$pasw_adm)//и пароль верный
   {
      $_SESSION['pas']=$_POST['pasw'];//то устанавливается сессия
   }
}

if (isset($_SESSION['pas']))//если сессия существует
{
   if ($_SESSION['pas']==$pasw_adm)//и значение равно паролю
   {// начало защищённой области
       echo "Вы находитесь в защищённой области
       <p><a href=\"adm_form.php?adm=0\">выход</a>";
   }// конец защищённой области
   else
   {
       echo 'Кто-то пытается подобрать пароль';//сессия есть, а значение не то
       unset($_SESSION['pas']);//разрушим сессию
   }
}
else// если ссессия не установлена, показать форму ввода пароля
{
   echo "<form action=\"adm_form.php\" method=\"post\">
        Введите пароль<br>
        <input type=\"password\" name=\"pasw\">
        <input type=\"submit\" name=\"form\" value=\"OK\">
        </form>";
}
?>

Знатоки, просьба оценить.

В принципе после установке сессии в других файлах достаточно писать это чтобы работать в защищённом режиме.
Код

...
session_start();
....
if (isset($_SESSION['pas']))
{
   if ($_SESSION['pas']==$pasw_adm)
   {
    ........................
    ........................
    }






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


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


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

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



Цитата(Red @ 24.1.2005, 10:22)
$pasw_adm = "1111";// это пароль, я его храню в отдельном файле или базе

Пароль в явном виде хранишь, что не есть хорошо.
PM ICQ   Вверх
Gold Dragon
Дата 24.1.2005, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Mal @ 24.1.2005, 10:25)
Пароль в явном виде хранишь, что не есть хорошо.
так его можно и в отдельном защищённом файле или в базе. Это я просто для наглядности....



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


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


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

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



Red Dragon
пароль надо хранить зашифрованным. Где ты будешь это делать - совсем другой вопрос.
PM ICQ   Вверх
Gold Dragon
Дата 24.1.2005, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Mal Hack
ну так дополни код ... ведь народ учится smile


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


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


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

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



Цитата(Red @ 24.1.2005, 10:22)
$pasw_adm = "1111";// это пароль, я его храню в отдельном файле или базе

заменяем на:
Код

$pasw_adm = md5("1111");



Цитата(Red @ 24.1.2005, 10:22)
if($_POST['pasw']==$pasw_adm)//и пароль верный

на
Код

if(md5($_POST['pasw'])==$pasw_adm)


Имхо, дальше ты в любом случае пишешь пароль в сессию, что не хорошо...
Т.е. я тебе уже давал статью, где показывал что там надо хранить...
Пасс надо использовать только при авторизации.
PM ICQ   Вверх
Gold Dragon
Дата 24.1.2005, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



А что, при данном коде так легко взломать админку?


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


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


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

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



Red Dragon
пароль легче узнать.
PM ICQ   Вверх
Alx
Дата 24.1.2005, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



Mal Hack
даже если и узнать пароль, что с того? если он в md5, обратно его уже никак не вытащишь!


--------------------
PM MAIL WWW ICQ   Вверх
Sardar
Дата 24.1.2005, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Особенно если пароль перед тем как через md5 пропустить, порезать на пополам и обменять половинки smile Имея хешь сложно подобрать пароль перебором если не знаешь как его надо преобразовывать


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


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



Sardar
а ты мог бы из хеши подобрать оригинал? научишь меня? ;)


--------------------
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 24.1.2005, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Ну так пойдёт код? Я же не супер защиту для банков пишу...


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


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



Red Dragon
годен)))


--------------------
PM MAIL WWW ICQ   Вверх
Alx
Дата 24.1.2005, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



ну вот и я подоспел. выкидываю не только PHP, но и все страницы с HTML и JavaScript для полноты картины. итак,

install.php
Код

<html>
<head>
<title>FlyVote :: Установка Базы данных MySQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta name="autor" content="Alx, ALEXANDRO">
<link rel="StyleSheet" href="files/main.css">
<script>
function subm()
{var frm = document.forms["sql_install"];
var dataRight = true;
if (frm.elements[0].value == "")
{alert("Вы должны ввести название Вашего SQL хоста!")
dataRight = false;
}
if (frm.elements[1].value == "")
{alert("Вы должны ввести название Вашей БД!")
dataRight = false;
}
if (frm.elements[2].value == "")
{alert("Вы должны ввести имя пользователя базы!")
dataRight = false;
}
if (frm.elements[4].value == "")
{alert("Вы должны ввести ваш логин!")
dataRight = false;
}
if (frm.elements[5].value == "")
{alert("Вы должны ввести Ваш пароль!")
dataRight = false;
}
if (frm.elements[6].value == "")
{alert("Вы должны повторить введённый Вами пароль для исключения опечаток!")
dataRight = false;
}
if (frm.elements[6].value != frm.elements[5].value)
{alert("Пароли не совпадают!")
dataRight = false;
}
if (dataRight)
{frm.elements[7].value = "subm";
frm.submit();
}
}
</script>
</head>
<body>
<center>
<div style="text-align:center;font-size:20pt;"><b>FlyVote<b></div>
<div style="text-align:center;font-size:13pt;"><b>Установка БД MySQL</div>
<br><br>
<table width="100%" height="80%">
<tr>
<td align="center" valign="middle">
<?
if (isset($_POST["sent"]))
mainfunc();
else
printform();
function mainfunc()
{$dataRight = true;
if ($_POST["sql_host"] == "" || $_POST["sql_db"] == "" || $_POST["sql_login"] == "" || $_POST["user_name"] == "" || $_POST["user_pass"] == "" || $_POST["user_pass2"] == "")
{echo "<center><b style='color:red;'>ОШИБКА!<br>Вы не заполнили все поля формы!</b></center>";
$dataRight = false;
}
if ($_POST["user_pass"] != $_POST["user_pass2"])
{echo '<center><b style="color:red;">Пароль и подтверждение не совпадают</b></center>';
printform();
$dataRight = false;
}
if ($dataRight)
{define("DBName",$_POST["sql_db"]);
define("HostName",$_POST["sql_host"]);
define("UserName",$_POST["sql_login"]);
define("Password",$_POST["sql_pass"]);
if(@!mysql_connect(HostName,UserName,Password))
{echo "<b style='color:red;'>Ошибка соеденения с базой:</b><br><textarea readonly cols='66' rows='5'>".mysql_error()."</textarea><br>";
printform();
exit;
}
$code = '<?
$sql_host = "'.$_POST['sql_host'].'";
$sql_db = "'.$_POST['sql_db'].'";
$sql_user = "'.$_POST['sql_login'].'";
$sql_pass = "'.$_POST['sql_pass'].'";
?>';

@$fp=@fopen("conf.php","w");
@fwrite($fp,$code);
@fclose($fp);
@chmod("conf.php", 0666);

mysql_select_db(DBName);
@mysql_query("drop table flyvote_admin");
@mysql_query("create table flyvote_admin(name text, pass text)");
mysql_query("insert into flyvote_admin(name, pass) values('".$_POST['user_name']."', '".md5($_POST['user_pass'])."')");
$r=mysql_query("select * from flyvote_admin");
if(@mysql_num_rows($r))
{echo '<table width="70%" border="0" cellspacing="3" cellpadding="0" style="background: #FFDB9F; border: 1px solid #666666;">
<tr>
<td colspan="2" class="titletd">
Установка завершена!
</td>
</tr>
<tr>
<td width="100%" style="background: #FFE4B9; border: 1px solid #666666;padding:30px;" valign="top">
<div align="center"><b>Установка успешно завершена!</b></div>
<br>
<i>Данные, необходимые для доступа в Панель Администрирования FlyVote:</i>
<br><br>
<b>Логин:</b> '.$_POST['user_name'].'
<br>
<b>Пароль:</b> '.$_POST['user_pass'].'
<br><br>
Пожалуйста сохраните эти данные в надёжным месте, так как при утере восстановить их будет нельзя.
<br><br>
<div align="center"><b>Внимание!</b></div>
<br>
Вам необходимо удалить файл <b>install.php</b> через FTP как можно скорее, чтобы никто не мог сменить Ваши настройки и получить доступ к Вашей Панели Администрирования.
<br><br><br>
<i>Спасибо за выбор нашей программы!
<div align="right">
<a href="http://alx.com.ru/">Alx</a> @ <a href="http://soft.flyweb.ru/">FlyWeb Soft</a>
</div>
</td>
</tr>
<tr>
<td class="titletd" onmouseover="this.style.cursor=\'hand\';" onclick="document.location.href = \'index.php\';">
Вход в Панель Администрирования
</td>
</tr>
</table>
';
}
else
{echo "<b style='color:red;'>Ошибка соеденения с базой:</b><br><textarea readonly cols='66' rows='5'>".mysql_error()."</textarea><br>";
printform();
}
}
}
function printform()
{echo '
<form name="sql_install" action="install.php" method="post">
<table width="70%" border="0" cellspacing="3" cellpadding="0" style="background: #FFDB9F; border: 1px solid #666666;">
<tr>
<td colspan="2" class="titletd">
Данные MySQL
</td>
</tr>
<tr>
<td width="40%" class="label">
Имя хоста:
</td>
<td width="60%" class="tdp">
<input type="text" size="50" name="sql_host" value="localhost">
</td>
</tr>
<tr>
<td width="40%" class="label">
База:
</td>
<td width="60%" class="tdp">
<input type="text" size="50" name="sql_db" value="'.@$_POST["sql_db"].'">
</td>
</tr>
<tr>
<td width="40%" class="label">
Логин:
</td>
<td width="60%" class="tdp">
<input type="text" size="50" name="sql_login" value="'.@$_POST["sql_login"].'">
</td>
</tr>
<tr>
<td width="40%" class="label">
Пароль:
</td>
<td width="60%" class="tdp">
<input type="password" size="50" name="sql_pass" value="'.@$_POST["sql_pass"].'">
</td>
</tr>
</table>
<br>
<table width="70%" border="0" cellspacing="3" cellpadding="0" style="background: #FFDB9F; border: 1px solid #666666;">
<tr>
<td colspan="2" class="titletd">
Личные данные администратора
</td>
</tr>
<tr>
<td width="40%" class="label">
Логин:
</td>
<td width="60%" class="tdp">
<input type="text" size="50" name="user_name" value="'.@$_POST["user_name"].'">
</td>
</tr>
<tr>
<td width="40%" class="label">
Пароль:
</td>
<td width="60%" class="tdp">
<input type="password" size="50" name="user_pass">
</td>
</tr>
</tr>
<tr>
<td width="40%" class="label">
Повторите пароль:
</td>
<td width="60%" class="tdp">
<input type="password" size="50" name="user_pass2">
<input type="hidden" name="sent">
</td>
</tr>
</table>
<br>
<table width="70%" border="0" cellspacing="3" cellpadding="0" style="background: #FFDB9F; border: 1px solid #666666;">
<tr>
<td colspan="2" class="titletd" onmouseover="this.style.cursor=\'hand\';" onclick="subm();">
>> Готово <<
</td>
</tr>
</table>
</form>';
}
?>
</td>
</td>
</table>
</center>
</body>
</html>


admin.php
Код

<?
if(file_exists("conf.php"))
{require "conf.php";
define("DBName",$sql_db);
define("HostName",$sql_host);
define("UserName",$sql_user);
define("Password",$sql_pass);
}
else
{header('Location:install.php');
}
?>

<html>
<head>
<title>FlyVote :: Установка Базы данных MySQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta name="autor" content="Alx, ALEXANDRO">
<link rel="StyleSheet" href="files/main.css">
<script>
function subm()
{var frm = document.forms["login_form"];
var dataRight = true;
if (frm.elements[0].value == "")
{alert("Введите логин!")
dataRight = false;
}
if (frm.elements[1].value == "")
{alert("Введите пароль!")
dataRight = false;
}
if (dataRight)
{frm.elements[2].value = "subm";
frm.submit();
}
}
</script>
</head>
<body>
<center>
<div style="text-align:center;font-size:20pt;"><b>FlyVote<b></div>
<div style="text-align:center;font-size:13pt;"><b>Admin Zone</div>
<br><br>
<table width="100%" height="80%">
<tr>
<td align="center" valign="middle">
<?
if (isset($_POST["sent"]))
mainfunc();
else
printform();
function mainfunc()
{$dataRight = true;
if ($_POST["login"] == "" || $_POST["pass"] == "")
{echo "<center><b style='color:red;'>ОШИБКА!<br>Введите логин и пароль!</b></center>";
$dataRight = false;
}
if ($dataRight)
{if(@!mysql_connect(HostName,UserName,Password))
{echo "<b style='color:red;'>Ошибка соеденения с базой:</b><br><textarea readonly cols='66' rows='5'>".mysql_error()."</textarea><br>";
printform();
exit;
}
mysql_select_db(DBName);
$r=mysql_query("select * from flyvote_admin");
if(@mysql_num_rows($r))
{$f = mysql_fetch_array($r);
if ($_POST["login"] != $f[0])
{echo "<b style='color:red;'>Неправильный логин</b><br>";
$dataRight = false;
}
if (md5($_POST["pass"]) != $f[1])
{echo "<b style='color:red;'>Неправильный пароль</b><br>";
$dataRight = false;
}
if ($dataRight)
{echo "<b style='color:green;'>Авторизация прошла успешно!</b><br>";
session_save_path('/home/alx/www/sessions');
session_start();
$_SESSION["password"] = md5($_POST["pass"]);
echo "<script>document.location.href = 'admin.php';</script>";
exit;
}
else
printform();
}
else
{echo "<b style='color:red;'>Ошибка соеденения с базой:</b><br><textarea readonly cols='66' rows='5'>".mysql_error()."</textarea><br>";
printform();
}
}
}
function printform()
{echo '
<form name="login_form" action="index.php" method="post">
<table width="70%" border="0" cellspacing="3" cellpadding="0" style="background: #FFDB9F; border: 1px solid #666666;">
<tr>
<td colspan="2" class="titletd">
Авторизация
</td>
</tr>
<tr>
<td width="40%" class="label">
Логин:
</td>
<td width="60%" class="tdp">
<input type="text" size="50" name="login">
</td>
</tr>
<tr>
<td width="40%" class="label">
Пароль:
</td>
<td width="60%" class="tdp">
<input type="password" size="50" name="pass">
<input type="hidden" name="sent">
</td>
</tr>
<tr>
<td colspan="2" class="titletd" onmouseover="this.style.cursor=\'hand\';" onclick="subm();">
Вход!
</td>
</tr>
</table>
</form>';
}
?>
</td>
</td>
</table>
</center>
</body>
</html>


проверка сессии:
Код

<?
if(file_exists("conf.php"))
{require "conf.php";
define("DBName",$sql_db);
define("HostName",$sql_host);
define("UserName",$sql_user);
define("Password",$sql_pass);
}
else
{header('Location:install.php');
exit;
}
mysql_select_db(DBName);
$r = mysql_query("select * from flyvote_admin");
$f = mysql_fetch_array($r);
session_save_path('/home/alx/www/sessions');
session_start();
if ($_SESSION['password'] != $f[1])
{header('Location:index.php');
exit;
}
?>




--------------------
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 24.1.2005, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Alx
Red Dragon
Все таки останусь при мнении, что даже если не защиту для банка делаете, пароль в открытом (читаемом) виде хранить нельзя.

Цитата(Alx @ 24.1.2005, 17:15)
if ($_POST["sql_host"] == "" || $_POST["sql_db"] == "" || $_POST["sql_login"] == "" || $_POST["user_name"] == "" || $_POST["user_pass"] == "" || $_POST["user_pass2"] == "")

Проверяй используя empty();

Цитата(Alx @ 24.1.2005, 17:15)
$r=mysql_query("select * from flyvote_admin");
if(@mysql_num_rows($r))
{$f = mysql_fetch_array($r);
if ($_POST["login"] != $f[0])
{echo "<b style='color:red;'>Неправильный логин</b><br>";
$dataRight = false;
}
if (md5($_POST["pass"]) != $f[1])
{echo "<b style='color:red;'>Неправильный пароль</b><br>";
$dataRight = false;
}

Зачем так сложно...
$r=mysql_query("select * from flyvote_admin WHERE login = XXX AND pass = md5(YYY)");
если вернет 1 запись значит юзер ввел правтльные данные.

PM ICQ   Вверх
Alx
Дата 24.1.2005, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



Цитата(Mal @ 24.1.2005, 18:15)
Зачем так сложно...
$r=mysql_query("select * from flyvote_admin WHERE login = XXX AND pass = md5(YYY)");
если вернет 1 запись значит юзер ввел правтльные данные.


smile smile



--------------------
PM MAIL WWW ICQ   Вверх
Sardar
Дата 24.1.2005, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Alx на спор по словарю с комбинациями или даже перебором smile Все оффисные машины поставить, максимум за пару месяцев подберут smile


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


индеец
***


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

Репутация: 22
Всего: 53



Mal Hack
1) Опасность mysql инъекции
2) Нет проверки на регистр
PM   Вверх
Mal Hack
Дата 24.1.2005, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Irokez @ 24.1.2005, 21:29)
1) Опасность mysql инъекции

А mysql_escape_string(); зачем придумали?
Поверь POST данные намного легче подделать, чем SQL иньекцию провернуть.

Цитата(Irokez @ 24.1.2005, 21:29)
2) Нет проверки на регистр

Что значит нет?
Там равно стоит...
http://dev.mysql.com/doc/mysql/ru/string-c...-functions.html

PM ICQ   Вверх
Irokez
Дата 24.1.2005, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

Репутация: 22
Всего: 53




mysql> select 'a'='A' and '0cc175b9c0f1b6a831c399e269772661'=md5('a');
+---------------------------------------------------------+
| 'a'='A' and '0cc175b9c0f1b6a831c399e269772661'=md5('a') |
+---------------------------------------------------------+
| 1 |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Добавлено @ 22:22
раз уж на то пошло:
Код

$r=mysql_query("select * from flyvote_admin WHERE binary login = XXX AND pass = md5(YYY)");


Это сообщение отредактировал(а) Irokez - 24.1.2005, 22:20
PM   Вверх
Mal Hack
Дата 24.1.2005, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Irokez
login & pass - имена полей... XXX & YYY - данные ПОСТ...
PM ICQ   Вверх
Irokez
Дата 24.1.2005, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

Репутация: 22
Всего: 53



Цитата(Mal @ 24.1.2005, 22:28)
Irokez
login & pass - имена полей... XXX & YYY - данные ПОСТ...

с этим я и не спорю, просто хотел показать на примере, что твой запрос регистронезависим

PM   Вверх
Mal Hack
Дата 24.1.2005, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Для регистрозависимого поиска надо BLOB использовать, а не TEXT
PM ICQ   Вверх
Irokez
Дата 25.1.2005, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

Репутация: 22
Всего: 53



Цитата(Mal @ 24.1.2005, 22:38)
Для регистрозависимого поиска надо BLOB использовать, а не TEXT

smile по-моему мы уже о разных вещах начали спорить ...
PM   Вверх
Mal Hack
Дата 25.1.2005, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Irokez
Нет. TEXT на сколько я знаю, вообще не подерживает регистрозависимый поиск.
PM ICQ   Вверх
Irokez
Дата 25.1.2005, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

Репутация: 22
Всего: 53



Проведем эксперимент:

mysql> create table test1(text text);
Query OK, 0 rows affected (0.08 sec)

mysql> insert into test1 'aaa';

mysql> select * from test1 where text='AAA';
+------+
| text |
+------+
| aaa |
+------+
1 row in set (0.04 sec)

mysql> select * from test1 where binary text='AAA';
Empty set (0.00 sec)

Это сообщение отредактировал(а) Irokez - 25.1.2005, 20:56
PM   Вверх
Mal Hack
Дата 25.1.2005, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Irokez
BINARY это уже другой вопрос smile По сути он из TEXT'a BLOB делает smile
PM ICQ   Вверх
Irokez
Дата 25.1.2005, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

Репутация: 22
Всего: 53



дык начальный вопрос был: разумно ли делать авторизацию пользователя запросом:
Цитата

select * from flyvote_admin WHERE login = XXX AND pass = md5(YYY)

ответ: нет, не разумно по причине того что не проверяется регистр логина, а это можно изменить с помощью ключевого слова BINARY, причем тут TEXT или BLOB?

PM   Вверх
Mal Hack
Дата 25.1.2005, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Irokez @ 25.1.2005, 21:48)
причем тут TEXT или BLOB?

Почитай спецификацию полей и поймешь.
TEXT - символьный.
BLOB - бинарный.


Цитата(Irokez @ 25.1.2005, 21:48)
дык начальный вопрос был: разумно ли делать авторизацию пользователя запросом:

По сравнению с выниманием из базы логина и пасса - да, регистр - уже дело, так сказать тонкое.
PM ICQ   Вверх
Irokez
Дата 25.1.2005, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

Репутация: 22
Всего: 53



ладно, каждый остался при своем мнении, тут уж друг друга не переубедить ...
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1198 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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