Авторизация для доступа к БД через Web
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
- proxy-man
- лейтенант
- Сообщения: 692
- Зарегистрирован: 2006-04-05 12:06:13
- Откуда: Odessa
- Контактная информация:
Авторизация для доступа к БД через Web
Привет. Кто-нибудь сталкивался с организацией доступа к БД (юзается Постгрес) при помощи вэб-интерфейса? Куда нужно копать? (на phpclub.ru и php.ru - поиск не принес результатов - там весь народ юзает в основном Мускуль, а относительно "слона" - инфы малова-то будет)... Киньте в меня линками плизььь
ЗЫ: основная заковыка - аутенфикация пользователя справочной системы. База уже готова (примерный или можно сказать тестовый образец) и теперь необходимо подключиться к ней при помощи обычного браузера. Однако, авторизация (правильная авторизация) - не происходит... может быть "собака порылась" в правах доступа к каталогам и их содержимому (где находятся файлы с расширением *.php)?
ЗЫ1: очень большой жаль, что процесс работы с такой БД как Постгрес, практический нигде не осведомлен...
ЗЫ: основная заковыка - аутенфикация пользователя справочной системы. База уже готова (примерный или можно сказать тестовый образец) и теперь необходимо подключиться к ней при помощи обычного браузера. Однако, авторизация (правильная авторизация) - не происходит... может быть "собака порылась" в правах доступа к каталогам и их содержимому (где находятся файлы с расширением *.php)?
ЗЫ1: очень большой жаль, что процесс работы с такой БД как Постгрес, практический нигде не осведомлен...
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- northern
- лейтенант
- Сообщения: 778
- Зарегистрирован: 2006-02-08 20:48:45
- Откуда: Днепропетровск
- Контактная информация:
- proxy-man
- лейтенант
- Сообщения: 692
- Зарегистрирован: 2006-04-05 12:06:13
- Откуда: Odessa
- Контактная информация:
northern - да, батенька, остановился на "слоне". Однако, скажу вот, что - литературы вообще нет... Надыбал себе только вот такую книжку (классическую, бумажную) -
"PostgreSQL руководство разработчика и администратора" by Гешвинде&Шенинг...
Но издание - только руководство по установке, настройке, архитектуре (поверхносто) и сопровождении этой БД. Есть отдельная ветка по Постгресу на phpclub.ru - сейчас буду ее внимательно изучать...
"PostgreSQL руководство разработчика и администратора" by Гешвинде&Шенинг...
Но издание - только руководство по установке, настройке, архитектуре (поверхносто) и сопровождении этой БД. Есть отдельная ветка по Постгресу на phpclub.ru - сейчас буду ее внимательно изучать...
- Alex Keda
- стреляли...
- Сообщения: 35457
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- proxy-man
- лейтенант
- Сообщения: 692
- Зарегистрирован: 2006-04-05 12:06:13
- Откуда: Odessa
- Контактная информация:
Подразумевается следующее - в БД создается таблица, в которой содержатся записи пользователей, которые будут иметь доступ к базе через вэб-интерфейс. А вообще, лучше расскажу так:а что подразумевается под авторизацией доступа к БД через php?
1. создаем базу данных в Постгресе (пока база - тестовая) - в базе есть различного рода
таблицы, что само собой разумеется.
2.доступ к данной базе (назовем ее test) - имеет специальный юзер, который создан в Постгресе.
3.необходимо идентифицировать пользователя, который подключается к БД при помощи вэб-интерфейса, по данным, которые храняться в таблице, например users - т.е. по имени и паролю... Пока это реализовать не могу...
- Alex Keda
- стреляли...
- Сообщения: 35457
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Код: Выделить всё
<?php
// подрубаем БД
require_once("../includes/db_data.php");
// авторизуем мудазвона, что припёрся.
if (!isset($_SERVER['PHP_AUTH_USER'])){
header('WWW-Authenticate: Basic realm="Доступ к рулю от сайта"');
header('HTTP/1.0 401 Unauthorized');
exit;
}else{
// если пустой пасс или юзер - посылаем
if(strlen($_SERVER['PHP_AUTH_USER']) == 0){echo "<HTML>\n<HEAD>\n<TITLE>www.lissyara.su</TITLE>\n<META http-equiv=\"Content-Type\" content=\"text/html;charset=windows-1251\">\n</HEAD>\n<BODY>\n<br><br><br><br>\n<CENTER>Типа, самый умный, да?</CENTER>\n</BODY>\n</HTML>\n"; exit;}
if(strlen($_SERVER['PHP_AUTH_PW']) == 0){echo "<HTML>\n<HEAD>\n<TITLE>www.lissyara.su</TITLE>\n<META http-equiv=\"Content-Type\" content=\"text/html;charset=windows-1251\">\n</HEAD>\n<BODY>\n<br><br><br><br>\n<CENTER>Типа, самый умный, да?</CENTER>\n</BODY>\n</HTML>\n"; exit;}
// достаём имя пользователя и пароль из БД
Убей их всех! Бог потом рассортирует...
- proxy-man
- лейтенант
- Сообщения: 692
- Зарегистрирован: 2006-04-05 12:06:13
- Откуда: Odessa
- Контактная информация:
- Alex Keda
- стреляли...
- Сообщения: 35457
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- proxy-man
- лейтенант
- Сообщения: 692
- Зарегистрирован: 2006-04-05 12:06:13
- Откуда: Odessa
- Контактная информация:
Ну не скажите так... Если данные беруться из БД - следовательно необходимо сделать SELECT ... и проверить соответствие вводимых данных с данными, которые попадают к нам из формы на браузере... Вообще, эта тема мало окучена, все более вопросов обсуждают касательно работы с БД (запросы, тригерры и вложенные запросы... ) - видимо все больше клиента пишут или на Дельфи ... или Дельфи... :-)а в данном исполнении неважно откуда ты берёшь данные для сравнения - хоть из текстового файла.
- Alex Keda
- стреляли...
- Сообщения: 35457
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Код: Выделить всё
<?php
// подрубаем БД
require_once("../includes/db_data.php");
// авторизуем мудазвона, что припёрся.
if (!isset($_SERVER['PHP_AUTH_USER'])){
header('WWW-Authenticate: Basic realm="Доступ к рулю от сайта"');
header('HTTP/1.0 401 Unauthorized');
exit;
}else{
// если пустой пасс или юзер - посылаем
if(strlen($_SERVER['PHP_AUTH_USER']) == 0){echo "<HTML>\n<HEAD>\n<TITLE>www.lissyara.su</TITLE>\n<META http-equiv=\"Content-Type\" content=\"text/html;charset=windows-1251\">\n</HEAD>\n<BODY>\n<br><br><br><br>\n<CENTER>Типа, самый умный, да?</CENTER>\n</BODY>\n</HTML>\n"; exit;}
if(strlen($_SERVER['PHP_AUTH_PW']) == 0){echo "<HTML>\n<HEAD>\n<TITLE>www.lissyara.su</TITLE>\n<META http-equiv=\"Content-Type\" content=\"text/html;charset=windows-1251\">\n</HEAD>\n<BODY>\n<br><br><br><br>\n<CENTER>Типа, самый умный, да?</CENTER>\n</BODY>\n</HTML>\n"; exit;}
// достаём имя пользователя и пароль из БД
$sql = "SELECT `author_id`,`author_name`,`author_passwd`,`author_active` FROM `authors_table` WHERE `author_name`='" . $_SERVER['PHP_AUTH_USER'] . "'";
$massiv_author = mysql_fetch_array(mysql_query("$sql"));
if($massiv_author['author_active'] == '0'){
// автор неактивен, пшёл прочь
echo "неактивен";
exit;
}else{
//echo "узер = " . $_SERVER['PHP_AUTH_USER'] . " пасс = " . $_SERVER['PHP_AUTH_PW'];
if(($_SERVER['PHP_AUTH_USER'] != $massiv_author['author_name'] )||(md5($_SERVER['PHP_AUTH_PW']) != $massiv_author['author_passwd'] )){
// неверное имяпользователя/пароль
//header('Location: ../');
echo "невернгое имя пользователя - пасс";
exit;
}
// автор активен, пароль верен.
// выводим радостные поздравления по этому поводу, и футболим на index.php
echo "успешная авторизация";
// выходим нах
exit;
}
}
?>
а в начале всех страниц инклюдишь файл такого содержимого:
Код: Выделить всё
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])){
header('WWW-Authenticate: Basic realm="Доступ к рулю от сайта"');
header('HTTP/1.0 401 Unauthorized');
exit;
}else{
// если пустой пасс или юзер - посылаем
if(strlen($_SERVER['PHP_AUTH_USER']) == 0){echo "<HTML>\n<HEAD>\n<TITLE>www.lissyara.su</TITLE>\n<META http-equiv=\"Content-Type\" content=\"text/html;charset=windows-1251\">\n</HEAD>\n<BODY>\n<br><br><br><br>\n<CENTER>Типа, самый умный, да?</CENTER>\n</BODY>\n</HTML>\n"; exit;}
if(strlen($_SERVER['PHP_AUTH_PW']) == 0){echo "<HTML>\n<HEAD>\n<TITLE>www.lissyara.su</TITLE>\n<META http-equiv=\"Content-Type\" content=\"text/html;charset=windows-1251\">\n</HEAD>\n<BODY>\n<br><br><br><br>\n<CENTER>Типа, самый умный, да?</CENTER>\n</BODY>\n</HTML>\n"; exit;}
// достаём имя пользователя и пароль из БД
$sql = "SELECT `author_id`,`author_name`,`author_passwd`,`author_active` FROM `authors_table` WHERE `author_name`='" . $_SERVER['PHP_AUTH_USER'] . "'";
$massiv_author = mysql_fetch_array(mysql_query("$sql"));
if($massiv_author['author_active'] == '0'){
// автор неактивен, пшёл прочь
echo "неактивен";
exit;
}else{
//echo "узер = " . $_SERVER['PHP_AUTH_USER'] . " пасс = " . $_SERVER['PHP_AUTH_PW'];
if(($_SERVER['PHP_AUTH_USER'] != $massiv_author['author_name'] )||(md5($_SERVER['PHP_AUTH_PW']) != $massiv_author['author_passwd'] )){
// неверное имяпользователя/пароль
//header('Location: ../');
echo "неверное имя";
exit;
}
}
}
?>
Убей их всех! Бог потом рассортирует...
- Alex Keda
- стреляли...
- Сообщения: 35457
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- Alex Keda
- стреляли...
- Сообщения: 35457
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
добавил в начало обоих файлов
Код: Выделить всё
// лохматим юзера и пароль, если что не так - нех.
if(preg_match("#[^0-9a-zA-Z]#i",$_SERVER['PHP_AUTH_USER'])){ // в юзере что-то не то.
header("Location:http://www.yandex.ru/yandsearch?stype=&nl=0&text=%EA%E0%EA+%E2%E7%EB%EE%EC%E0%F2%FC+%F1%E0%E9%F2");
exit;
} // закрытие недопустимых символов
if(preg_match("#[^0-9a-zA-Z]#i",$_SERVER['PHP_AUTH_PW'])){ // в юзере что-то не то.
header("Location:http://www.yandex.ru/yandsearch?stype=&nl=0&text=%EA%E0%EA+%E2%E7%EB%EE%EC%E0%F2%FC+%F1%E0%E9%F2");
exit;
} // закрытие недопустимых символов
Убей их всех! Бог потом рассортирует...
- proxy-man
- лейтенант
- Сообщения: 692
- Зарегистрирован: 2006-04-05 12:06:13
- Откуда: Odessa
- Контактная информация:
- proxy-man
- лейтенант
- Сообщения: 692
- Зарегистрирован: 2006-04-05 12:06:13
- Откуда: Odessa
- Контактная информация:
- Alex Keda
- стреляли...
- Сообщения: 35457
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- proxy-man
- лейтенант
- Сообщения: 692
- Зарегистрирован: 2006-04-05 12:06:13
- Откуда: Odessa
- Контактная информация:
Такая штука, что я пока только теоритеческий представляю, каким образом это сделать - вытянуть из БД логин и пароль и сравнить его с теми данными, что вводит пользователь, когда логинится на сайте...da kakaya raznitsa!
tebe iz BD nado dostat` login i parol i sravnit. vse.
ЗЫ - Лис, а куда русскую расскладку подевал?
- Alex Keda
- стреляли...
- Сообщения: 35457
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- Alex Keda
- стреляли...
- Сообщения: 35457
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
вот пример, из которого родилось то что написано выше:
http://php.mysoft.ge/manual/ru/features.http-auth.php
http://php.mysoft.ge/manual/ru/features.http-auth.php
Убей их всех! Бог потом рассортирует...
- proxy-man
- лейтенант
- Сообщения: 692
- Зарегистрирован: 2006-04-05 12:06:13
- Откуда: Odessa
- Контактная информация:
- Alex Keda
- стреляли...
- Сообщения: 35457
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
http://www.specialist.ru/programs/course.asp?idc=286
это. в принципе, я процентов 90 знаю - но бумажка, плюс эти самые 10% - абсолютно неявные вещщи
это. в принципе, я процентов 90 знаю - но бумажка, плюс эти самые 10% - абсолютно неявные вещщи
Убей их всех! Бог потом рассортирует...
- proxy-man
- лейтенант
- Сообщения: 692
- Зарегистрирован: 2006-04-05 12:06:13
- Откуда: Odessa
- Контактная информация:
http://php.ru/manual/features.http-auth.html - более новый вариант мануала PHP на русском языке.
- Alex Keda
- стреляли...
- Сообщения: 35457
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- proxy-man
- лейтенант
- Сообщения: 692
- Зарегистрирован: 2006-04-05 12:06:13
- Откуда: Odessa
- Контактная информация:
Ложу на обозрение пример своего "куска кода" для регистрации пользователя...
Однако ... запрос нихрена не работает
Т.е. в браузере появляется форма для ввода логина и пароля (а как иначе может быть?), начинаем вводить логин и пароль, жмем кнопку "ОК".... и вываливается строка, если бы я нажал кнопку "ОТМЕНА".... Камрады - прошу меня поправить...
Код: Выделить всё
<?
//происходит активация формы для ввода логина и пароля
if(!isset($name)&&!isset($password))
{
header('WWW-Authenticate: Basic realm="Input login and password"');
header('HTTP/1.0 401 Unauthorized');
echo 'Текст, отправляемый в том случае,
если пользователь нажал кнопку Cancel';
exit;
}else{
//подключаемся к БД используя указанные ниже параметры
$dbconn = pg_connect("host=localhost user=keeper dbname=test password=qwerty"
//проверяем статус соединения - если все ок - 'Connection status ok'
//если коннекта нет - 'Connection status bad'
$stat = pg_connection_status($dbconn);
if ($stat === PGSQL_CONNECTION_OK) {
echo 'Connection status ok';
}else{
echo 'Connection status bad';
}
//строим запрос для проверки введенного имени и пароля. Запрос проверяет наличие
//правильной строки - если значение строки нулевое - записи для пользователя в БД -
//отсутствует и следовательно в подключении будет отказано
$query = "select count(*) from passwd where
login='$name' and passwd='$password'";
//собственно выполняем сам запрос и проверяем его правильность
$result = pg_query($query);
if (!$result)
{
echo "ERROR\n";
exit;
}
//согласно мануала функция pg_query возвращает "pg_result_status -- Get status of query //result", а в нашем случае запрос передает в возвращаемую функцию pg_result_status
//или ноль (если записи нет) или единицу (если есть запись в таблице)
$count = pg_result_status($result);
if ($count > 0)
{
echo 'Login complite.<br>\n';
}else{
echo 'WRONG';
}
}
?>
Т.е. в браузере появляется форма для ввода логина и пароля (а как иначе может быть?), начинаем вводить логин и пароль, жмем кнопку "ОК".... и вываливается строка, если бы я нажал кнопку "ОТМЕНА".... Камрады - прошу меня поправить...
- Alex Keda
- стреляли...
- Сообщения: 35457
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
добавь перез запросом, и запрос посмотри и руками его попробуй
Код: Выделить всё
echo $query
Убей их всех! Бог потом рассортирует...
- proxy-man
- лейтенант
- Сообщения: 692
- Зарегистрирован: 2006-04-05 12:06:13
- Откуда: Odessa
- Контактная информация: