форум вебмастероff на AlfaSpace.NET |
Ubuntu и Linux
|реактивный бесплатный хостинг
| Киноклуб. ВСЁ БЕСПЛАТНО!
база знаний хостинга
|
правила форума
| Начало ° Ответить ° Статистика ° Опрос ° Регистрация ° Поиск ° FAQ ° |
| Форум вебмастеров на AlfaSpace.NET / Создание сайта / Как сделать авторизацию для файла средствами РНР? |
| Автор | Сообщение |
| Рамиль minibb moder 1152 |
# Дата: 11 Май 2006 05:49 Сабж. Плиз прошу выкладывать не только свои идеи по теме но и код... ![]() |
| acsid Alfa Guru 2444 |
# Дата: 11 Май 2006 14:30 ° Поправил: acsid Рамиль распиши по подробнее чо за фаил , как должно дело обстоять
1) через .htacess сделать парось на фаил (ы) 2)изменять/добавлять/удалять список запаролированных фаилов в .htacess стредствами пхп |
| Рамиль minibb moder 1152 |
# Дата: 12 Май 2006 06:32 acsid Только не через .хтаккссесс... Не люблю такой метод авторизации... Может просто как-нибудь с помощью РНР. А файл типа "в админке", РНР |
| acsid Alfa Guru 2444 |
# Дата: 12 Май 2006 08:28 Рамиль делай фаил с логином и паролем или ещё лучше пробей их в скрипте. потом действуй через сессии.если их нет то выдавай форму и проверяй логин и пасс, если есть сессия проверяй хэшь .. и пропускай к фаилу .. схема обычная |
| Рамиль minibb moder 1152 |
# Дата: 13 Май 2006 08:20 acsid . Думаешь я что-нибудь понял?
» Рамиль Плиз прошу выкладывать не только свои идеи по теме но и код... |
| silen The Majestic 532 |
# Дата: 13 Май 2006 10:44 я тоге нифига не понял.... |
| acsid Alfa Guru 2444 |
# Дата: 13 Май 2006 12:05 Как сделать зону защищённую логином и паролем? ответ: 1)Создаём фаил secret.php в него поместим настройки админа
<?php
/* настройки администратора. */
define("ADMINUSER", "Admin"); /* логин админа замените admin на совоё*/
define("ADMINPASSWORD", "111"); /* пароль админите 111 на своё */
define("ADMINHOME", "admin_index.php");//admin_index.php страница на которую хот
ете попадать после авторизации.
//Внимание эта страница должна содержать в самом начале:
//<?php require_once("adminOnly.php");?> ?> 2) создаём фаил с формой логина и пароля(для админа) adminLoginForm.php <html> <head> <TITLE>Вход в Админку</TITLE> <meta name="robots" content="noindex 3)создаём фаил который будет проверять логин и пасс админа: adminLogin.php
<?php
if(file_exists("secret.php")) {
require_once("secret.php");инклюдим настройки
}
$loginAttempts = !isset($_POST['loginAttempts'])?1:$_POST['loginAttempts'];//про
веряем попытки входа(для возврата значений в форму)
$formuser = !isset($_POST['formuser'])?NULL:$_POST['formuser'];//достаём логин и
поста
$formpassword = !isset($_POST['formpassword'])?NULL:$_POST['formpassword'];//пар
оль из поста
//проверяем их и если не правильные посылаем в лес и выдаём форму входа
if(($formuser != ADMINUSER ) || ($formpassword != ADMINPASSWORD )) {
if ($loginAttempts == 0) { /* 3 strikes and they're out */
$_POST['loginAttempts'] = 1;
include("adminLoginForm.php");
exit;
}else{
if ( $loginAttempts >= 3 ) {
echo "<blink><p align='center' style=\"font-weight:bold;font-size:17
0px;color:red;font-family:sans-serif;\">Вход не удался даже с третей
попытки)</p
></blink>";
exit;
}else{
include("adminLoginForm.php");
exit;
}
}
}
//если всё впорядке выдаём ту страницу что вы задали в secret.php как главную по
сле входа
if (($formuser == ADMINUSER ) && ($formpassword == ADMINPASSWORD )) {
session_start();
$_SESSION['adminUser'] = ADMINUSER;
$_SESSION['adminPassword'] = ADMINPASSWORD;
$SID = session_id();
$adminHome = ADMINHOME;
include($adminHome);
}
?> 4)Теперь создаём контролирующий фаил (который контролирует наличие сессии при выдаче доступа) его мы будем инклюдить во все фаилы которые хотим защетить
<?php
session_start();//начинаем сессию
error_reporting(0);//вырубаем ошибки
//если нет сесси админа посылам в лес (выдаём форму логина)
if( (!isset($_SESSION['adminUser'])) || (!isset($_SESSION['adminPassword'])) ) {
include_once("adminLogin.php");
exit;
}
if(file_exists("secret.php")) {
require_once("secret.php");
}
//если сессия не является админовской посылаем в тотже лес
if( ($_SESSION['adminUser'] != ADMINUSER) || ($_SESSION['adminPassword'] != ADMI
NPASSWORD) ) {
("Location: adminLogin.php");
include_once("adminLogin.php");
exit;
}//если всё впроядке пропускаем
?> 5) Во все ПХП фаилы ,которые хотим защетить в начало втавляем: <?php require_once("adminOnly.php");?>теперь незабудем в целях безопасности сделать страницу выхода: adminLogOut.php на неё нужно заходить поле завершения работы с защищённой зоной ,для безопасности данных админа.
<?php
error_reporting(0);//вырубаем ошибки
session_start();//стартуем сессию
function session_clear() {//функция удаления сессии
$exists = "no";
$session_array = explode(";",session_encode());//всю сессю в массив
for ($x = 0; $x < count($session_array); $x++) {//эксплойдаем её
//бла бла бла и так далее чтобы узначть ту ли сессию мы уничтожаем
$name = substr($session_array[$x], 0, strpos($session_array[$x],"|"));
if (session_is_registered($name)) {
session_unregister('$name');
$exists = "yes";
}
}
if ($exists != "no") {
session_destroy();
}
}
session_clear();//в конечном итоге сессию уничтожели и выдаем надпись:вы покинул
и админку
include"secret.php";
if(!session_is_registered(session_name())) {
echo"<h1>Вы покинули а
Админку</h1><a href='ADMINHOME'>Войти в админку</a>";
}else{
echo"<h1 style=\"color:red;\">Вы покинули а
Админку</h1>";
echo"Свяжитесь с Администратором.";
}
?> всё удачи вам ребята..на оч глупые вопросы не отвечаю
-------------- Исправил Константин: извиняюсь у автора за правку, но в firefox очень сильно разъехался экран по ширине Позже: похоже глюки непобедимы... все равно разъезжается ... |
| Рамиль minibb moder 1152 |
# Дата: 13 Май 2006 12:12 acsid Блин, спасибо!!! Не думал, что ответ будет тааакой полный! Главное чтобы всё запахало... А то иначе чем без
» acsid оч глупые вопросыНе обойдётца!!! ![]() |
| Рамиль minibb moder 1152 |
# Дата: 13 Май 2006 13:22 acsid Вроде палёт скрипта нормальный... Спасибо ещё раз!!! |
| acsid Alfa Guru 2444 |
# Дата: 13 Май 2006 14:06 Рамиль всегда пожалуйста) |
| Рамиль minibb moder 1152 |
# Дата: 13 Май 2006 14:08 acsid Надеюсь.. ![]() |
| smallcms Участник 2752 |
# Дата: 13 Май 2006 17:07 http://www2.stack.ru/~julia/PHP4/features.http-auth.html |
| silen The Majestic 532 |
# Дата: 13 Май 2006 18:16 acsid слушай а если заинклюдить в хтмл все эти секреты и не секреты..так можно сделать?? ![]() |
| acsid Alfa Guru 2444 |
# Дата: 14 Май 2006 01:31 ° Поправил: acsid » silen заинклюдить в хтмл кросавчег![]() |
| Рамиль minibb moder 1152 |
# Дата: 15 Май 2006 09:04 acsid А как можно зделать двух пользователей? |
| acsid Alfa Guru 2444 |
# Дата: 15 Май 2006 09:42 завтра ..сёдня уже глаза сорвал.. ![]() |
| Рамиль minibb moder 1152 |
# Дата: 15 Май 2006 10:15 acsid Бывает... ![]() |
| Рамиль minibb moder 1152 |
# Дата: 9 Окт 2006 11:58 acsid Да, с одним юзером прожил я уже почти четыре месяца, теперь нужно несколько Можешь помочь? |
| acsid Alfa Guru 2444 |
# Дата: 9 Окт 2006 13:31 Рамильскрипты писать не буду, т.к. теперь ты уже соображаешь . Схема: Фаил в нём на каждой строке хотябы: ник::пароль При входе находи по нику (из вормы) ник в фаиле и сравнивай пароль. ДАльше всё тоже самое. |
| Рамиль minibb moder 1152 |
# Дата: 10 Окт 2006 07:21 acsid Я пытался, но как стравнивать-то? В цикле? |
| Dimas Участник 34 |
# Дата: 10 Окт 2006 15:07 1. if( (!isset($_SESSION['adminUser'])) || (!isset($_SESSION['adminPassword'])) ) { include_once("adminLogin.php"); exit; } Для чего тут EXIT; ? 2. Такой вопрос. А зачем делать выход ? Понятно что для защиты, но чем тут может воспользоваться злоумышленник? |
| acsid Alfa Guru 2444 |
# Дата: 10 Окт 2006 23:18 ° Поправил: acsid Dimas » Dimas Для чего тут EXIT;для того чтобы если нет сессий админа,скрипт дальше не работал, а только отдал форму входа. Всёравно что die(); 2)Скажем возможно сделать перехвать сессии, в нашем случае довольно сложно.Но чем чорт не шутит. Рамиль небольной пример (из чата,у меня эта функция проверяла пароль и возвращала ранг пользователя. ), короче делает примерно то что тебе нужно:
function password_check($enginefile,$login,$sys_error_color,$text,$title,$design
,$Passw){
$filename = FileArray("$enginefile/users.php");
$filename_arr=$filename[0];
for ($i=0; $i < count($filename_arr); $i++) {
$Conf=explode('<!>',$filename_arr[$i]);
if($Conf[1]==$login){
$rang=$Conf[4];
if(trim($Conf[2])!=$Passw){
$text="Не правильный пароль!<br>";
die_error($sys_error_color,$text,$title,$design);
}
return $rang;
}}
return 1;
}
//die_error($sys_error_color,$text,$title,$design); это ещё одна функция , к
оторая делает вывод всех ошибок в стандартный шаблон
///$filename = FileArray("$enginefile/users.php");
/// $filename_arr=$filename[0];
/// FileArray замени на fopen ,это моя функция для безопасного открытия фаил
а при большом колличестве одновременных запросов.
/// $filename_arr=$filename[0]; вместо этой строки заблочь фаил(FLOCK).
|
| Рамиль minibb moder 1152 |
# Дата: 11 Окт 2006 06:34 acsid Спасибо. Теперь, когда я его переделаю, я так думаю можно будет просто сделать условия if(password_check() == 1) типа этого: if(password_check() != 1) {
if ($loginAttempts == 0) { /* 3 strikes and they're out */
$_POST['loginAttempts'] = 1;
include("adminLoginForm.php");
exit;
}else{
if ( $loginAttempts >= 3 ) {
echo "<blink><p align='center' style=\"font-weight:bold;font-size:17
0px;color:red;font-family:sans-serif;\">Вход не удался даже с третей
попытки)</p
></blink>";
exit;
}else{
include("adminLoginForm.php");
exit;
}
}
} ? ЗЫ. Есть ещё вопрос: ведь можно заменить константы ADMINUSER и ADMINPASSWORD на простые перменные? ЗЗЫ. И вместо инклуда админзонли.пхп просто задавать переменную во время удачного входа, на наличие которой и делать проверку в админовских станицах? |
| acsid Alfa Guru 2444 |
# Дата: 11 Окт 2006 14:26 » Рамиль Есть ещё вопрос: ведь можно заменить константы ADMINUSER и ADMINPASSWORD на простые перменные? можно , но безопастность пойдёт в минус » Рамиль ЗЗЫ. И вместо инклуда админзонли.пхп просто задавать переменную во время удачного входа, на наличие которой и делать проверку в админовских станицах?Ну если мы говорим о глобалс офф то определить глобальную переменную по которой проверяешь админа нельзя.Вообще такой метод это большая дыра. Лучше при совпадении логина и проля создай сложную сессию, наличие которой проверяй на других страницах админки. |
|
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:48884, gzipped size:13078 |