форум вебмастеро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 
,nofollow"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=Windows-
1 251"> </head > <body onload="window.document.adminLoginForm.formuser.focus()">
<!--START OF adminLoginForm.php --> <blockquote> <p><br></p> <!-- --> <form me
thod="post" name="adminLoginForm" action="adminLogin.php"> <?php $loginAttempts
= !isset($_POST['loginAttempts'])?1:$_POST['loginAttempts'] + 1;?> <input type="hidden" name="loginAttempts" value=" <?php echo $loginAttemp
ts;?>"> <table border="0" cellpadding="5"> <tr> <th colspan=2> Вход в Админку.</
th> </tr > <tr> <td align="right">Логин</td> <td> <input type="text" name="formuser" valu
e= " <?php echo $formuser;?>"> </td> </tr> <tr> <td>Пароль</td> <td> <input type="p
assword" name="formpassword" value=" <?php echo $formpassword;?>"> </td> </tr> <
tr> <td colspan=2> <input class="submit" type="submit" name="submit" value="Вхо д"> </td> </tr> </table> </form> </blockquote> </body> </html>





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 на простые перменные?

можно , но безопастность пойдёт в минус
» Рамиль
ЗЗЫ. И вместо инклуда админзонли.пхп просто задавать переменную во время удачного входа, на наличие которой и делать проверку в админовских станицах?

Ну если мы говорим о глобалс офф то определить глобальную переменную по которой проверяешь админа нельзя.Вообще такой метод это большая дыра. Лучше при совпадении логина и проля создай сложную сессию, наличие которой проверяй на других страницах админки.

Ваш ответ

Quote  Bold Style  Italic Style  Underlined Style  URL Link  Email Link  Script AutoTab  Preformatted Text  Отменить *Что это?
... Запретить смайлы


Перед отправкой "нелатинского" текста проверьте кодировку броузера!
 » Логин  » Пароль 
 
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:48884, gzipped size:13078

Mp3 Download || Мир Спанч боба || Song's Lyrics
eXTReMe Tracker Rambler's Top100 Рейтинг@Mail.ru Форум ТвойWeb [Valid RSS]