Как правильно организовать аторизацию на php

Discussion in 'PHP' started by Zircool, 9 Jun 2008.

  1. Zircool

    Zircool Elder - Старейшина

    Joined:
    1 Mar 2006
    Messages:
    162
    Likes Received:
    37
    Reputations:
    5
    Доброго времени суток.. Вопрос который меня мучает очень давно, как правильно организовать аторизацию на пхп.. Написал скрипт для аудита сайта и хочу к нему привязать доступ через пароль.Как?
     
  2. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    809
    Reputations:
    231
    Сделай авторизацию как в шелле rst например:
    PHP:
    $name='ec371748dc2da624b35a4f8f685dd122'// логин пользователя  (user login)
    $pass='ec371748dc2da624b35a4f8f685dd122'// пароль пользователя (user password)
    if (!isset($_SERVER['PHP_AUTH_USER']) || md5($_SERVER['PHP_AUTH_USER'])!==$name || md5($_SERVER['PHP_AUTH_PW'])!==$pass)
       {
       
    header('WWW-Authenticate: Basic realm="r57shell"');
       
    header('HTTP/1.0 401 Unauthorized');
       exit(
    "<b>Access Denied</b>");
       }
     
    _________________________
  3. Zircool

    Zircool Elder - Старейшина

    Joined:
    1 Mar 2006
    Messages:
    162
    Likes Received:
    37
    Reputations:
    5
    А по другому можно с использованием формы авторизации... Вот скрипт титульник для ввода пароля и логина...

    PHP:

    <html>

    <
    head>
      <
    title>Авторизация</title>

    <
    style>
    body
    {
        
    padding-left:350px;
        
    font-family:tahomaverdanaarial;
        
    font-size:11px;
        
    text-align:center;
        
    color:#000000;
        
    }

    table
    {

    border:1px solid #D1D1E1;
    margin:50px;
    padding:10px;
        }

        
    tr
        
    {

            
    text-align:center;
            }


    input
    {
        
    text-align:center;
        
    pargin:2px 0;
        
    padding-right:10px;
        
    padding-left:20px;
        
    border:1px solid #D1D1E1;
        
    background:#ffffff;
        
    padding:2px;

        }
    </
    style>

    </
    head>

    <
    body>



    <
    table>

    <
    form  method="post">
    <
    tr>
    <
    td>
    <
    br/>
    &
    nbsp; &nbsp; &nbspLogin:<input type="text" title="Введите Login" name="log" />
    <
    br/>
    <
    br />
    Password:<input type="password" title="Введите пароль" name="passwd" />
    <
    br/>
    <
    br />
    <
    center><input type="submit" name="sub"  value="&nbsp;&nbsp; &nbsp; &nbsp;  Login &nbsp; &nbsp;  &nbsp;&nbsp;" /></center>
    <
    br/>
    </
    td>
    </
    tr>
    </
    form>

    </
    table>






    </
    body>

    </
    html>

    Диз под сайт верстал... И главный скрипт к кторорому нужно открыть доступ info.php. Как сдемать что бы доступ с скрипту info.php был только через форму авторизации...
    В info.php просто лог статы...
     
  4. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    в файле авторизации добавь при успешной авторизации например

    define("site", "www.site.ru");

    и подключай файл info.php

    и в нём делай проверку

    if(defined('site'))
    {
    Всё ок....
    }
    1
    или создай сессию при успешной авторизации

    $_SESSION['voshol'] = 1;

    а в файле info.php

    if(isset($_SESSION['voshol']))
    {
    всё ок
    }
     
  5. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Проще некуда %)
    Code:
    <?php
    	define("LOGIN", "mylogin");
    	define("PASSWORD", "000000");
    	define("MODE", TRUE); // TRUE - сравнивать логин и пароль без учёта регистра, FALSE - с учётом
    	if(isset($_POST['log']) && isset($_POST['passwd']) && is_logined(MODE)) {
    		setcookie('login', $_POST['log'], time()+31536000);
    		setcookie('passwd', $_POST['passwd'], time()+31536000);
    	}
    	function is_logined($register) {
    		if($register == false) {
    			if(($_COOKIE['login'] == LOGIN && $_COOKIE['passwd'] == PASSWORD) || ($_POST['log'] == LOGIN && $_POST['passwd'] == PASSWORD)) {
    				return true;
    			}
    		} else if($register == true) {
    			if((strcasecmp($_COOKIE['login'],LOGIN)==0&&strcasecmp($_COOKIE['passwd'],PASSWORD)==0) || (strcasecmp($_POST['log'],LOGIN)==0&&strcasecmp($_POST['passwd'],PASSWORD)==0)) {
    				return true;
    			}
    		}
    		return false;
    	}
    ?>
    <html> 
    <head> 
    <title>Авторизация</title> 
    <style> 
    body 
    { 
        padding-left:350px; 
        font-family:tahoma, verdana, arial; 
        font-size:11px; 
        text-align:center; 
        color:#000000; 
    } 
    table 
    { 
    	border:1px solid #D1D1E1; 
    	margin:50px; 
    	padding:10px; 
    } 
    tr 
    { 
    
        text-align:center; 
    } 
    input 
    { 
        text-align:center; 
        pargin:2px 0; 
        padding-right:10px; 
        padding-left:20px; 
        border:1px solid #D1D1E1; 
        background:#ffffff; 
        padding:2px; 
    } 
    </style> 
    </head> 
    <body>
    <?php
    	if(is_logined(MODE)) {
    		// Код если всё в порядке
    	} else {
    ?>
    <table>
    <form  method="post"> 
    <tr> 
    <td> 
    <br/> 
    &nbsp; &nbsp; &nbsp; Login:<input type="text" title="Введите Login" name="log" /> 
    <br/> 
    <br /> 
    Password:<input type="password" title="Введите пароль" name="passwd" /> 
    <br/> 
    <br /> 
    <center><input type="submit" name="sub"  value="&nbsp;&nbsp; &nbsp; &nbsp;  Login &nbsp; &nbsp;  &nbsp;&nbsp;" /></center> 
    <br/> 
    </td> 
    </tr> 
    </form> 
    </table>
    <?php
    	}
    ?>
    </body>
    </html>
     
    2 people like this.