IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Авторизация по IP и паролю. (https://www.imho.ws/showthread.php?t=67251)

SoTiS 29.08.2004 13:05

Авторизация по IP и паролю.
 
Есть потребность на хостинге (mastak.ru) на папку повесить одновременно авторизацию по IP и паролю.

Подскажите как это лучше сделать.

Пример: юзер заходит в закрытую папку и тут идет проверка - если его IP есть в базе, то пропускаем, если нет его IP в базе, то спрашиваем пароль, пароля нет - до свидания (ошибка авторизации или страница с предложением оплатить доступ)...

буду благодарен за любую подсказку.
PS с меня если что требуется, то причитается... (напитки) :beer:

Hubbitus 29.08.2004 15:36

Дак ты же сам описал алгоритм полностью, осталось написать десяток строк его реализации на том же PHP, в чем проблема, или в чем вопрос?

P.S. Если нужно, могу занедорого реализовать полностью - стучись в аську.

InsaneX 29.08.2004 19:33

.htaccess file v etoy papke
Код:

Order deny,allow
Allow from 127.0.0.1
Allow from eshe.odin.ip.adres
Deny from all
AuthType Basic
AuthName "go away"
AuthUserFile /usr/local/etc/apache2/htpasswd
AuthGroupFile /dev/null
Require valid-user

/usr/local/etc/apache2/htpasswd
Код:

user:$2a$04$A3mH0.................qPFjmxxxxxxxxxxxx-skipped
ps: htpasswd delaetsya s pomoshiyu progi htpasswd cherez shell

Hubbitus 29.08.2004 20:02

InsaneX, это же не будет работать как требуется, он же запросит пароль только для указанных IP, а нужно наоборот - доверенные IP пропустить без пароля, а пароль спрашивать у всех остальных, а он остальных не пропустит вообще никак!

Или я ошибаюсь? :rolleyes:

InsaneX 29.08.2004 20:08

hmm da ti prav navernoe.. ya che to podumal chto odnovremenno nado i ip i eshe k nemu parol'

Цитата:

повесить одновременно авторизацию по IP и паролю
nu togda ya toje "Если нужно, могу занедорого реализовать полностью - стучись в аську" =)

CEO 30.08.2004 02:28

А так можна?
.htaccess
Цитата:

<Files *.dat>
order allow,deny
deny from all
</Files>
tr_ip.dat -- разрешенные IP
Цитата:

127.0.0.1
127.0.0.2
127.0.0.3
form.html
Цитата:

<html>
<body bgcolor=b9eeb5>
<font face="Arial" size=4><b>Вам нужно аторизоваться</b></font><br>
<table width=400 border=1 bgcolor=b9dda5>
<form action="phau.php" method=post>
<tr><td bgcolor=99bd55><font face="Arial" color=white size=2><b>Вход<b></font></td></tr>
<tr><td><font face="Arial" color=black size=2>Имя <input name="username" value="" size=10> Пароль <input name="userpass" type=password value="" size=10></font></td></tr>
<tr><td><font face="Arial" color=black size=2><input name=submit type=submit value="Войти"> <input type=reset value="Сбросить"></font></td></tr>
</form>
</table>
</body>
</html>
phau.php -- основной скрипт
Цитата:

<?php
#вспомогательные функции
function auth ($name, $pass) {
$userlist = file("tr_user.php");
$done = false;
$auth = false;
$found = false;
$i = 1;
while (!$done && !$found) {
list($n,$p,$a) = explode(':',$userlist[$i]);
$found = ($n==$name);
$auth = $found && ($p == md5($name.$pass));
$done = $auth || ($i>=count($userlist));
$i++;
}
return $auth;
}
function ra() {
if($query_string!= "")
{ $url = $php_self.'?'.$query_string; }
else { $url = $php_self; }
$add = $url."/form.html";
Header("Location: $add");
}

#Получение user's IP
if(getenv('HTTP_X_FORWARDED_FOR'))
{
$ip=getenv('HTTP_X_FORWARDED_FOR');
}
else {
$ip=getenv('REMOTE_ADDR');
}
#поиск полученного IP в списке разрешенных
$adre = file('tr_ip.dat');
$a = count($adre);
$i = 0; $w = -1;
while ($i <= $a):
$tmp = trim(str_replace ("\n","", $adre[$i]));
if ($tmp == $ip) { $w = $i; $i = $a++; }
$i++;
endwhile;
$res=false;
if ($w == -1)
{
if (!isset($username)){ra();}
$auth=authUser($username, $userpass);
if (!$auth) {ra();}
else {$res=true}
} else {$res=true}
if (!$res){ra();}
?>
tr_user.php -- список пользователей
Цитата:

<?php die("Access restricted"); ?>
admin:f6fdffe48c908deb0f4c3bd36c032e72:0
Основной скрипт просто подключить к тем страницам, кторые необходимо защитить
Цитата:

<?php include "phau.php";?>

SoTiS 30.08.2004 11:30

Спасибо за советы, буду пробовать. Но если кто-то хочет помочь (за недорого и полностью) то готов принять помощь. Моя аська 329146


Часовой пояс GMT +4, время: 19:03.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.