PDA

Просмотр полной версии : Как правильно организовать аторизацию на php


Zircool
09.06.2008, 23:35
Доброго времени суток.. Вопрос который меня мучает очень давно, как правильно организовать аторизацию на пхп.. Написал скрипт для аудита сайта и хочу к нему привязать доступ через пароль.Как?

Kaimi
09.06.2008, 23:55
Сделай авторизацию как в шелле rst например:

$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>");
}

Zircool
10.06.2008, 00:04
А по другому можно с использованием формы авторизации... Вот скрипт титульник для ввода пароля и логина...



<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>



<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>






</body>

</html>



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

Doom123
10.06.2008, 00:10
в файле авторизации добавь при успешной авторизации например

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

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

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

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

$_SESSION['voshol'] = 1;

а в файле info.php

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

NOmeR1
10.06.2008, 01:04
Проще некуда %)
<?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>