Как страничку запаролить?

al70

Чтобы окошко возникало перед тем, как зайти. Есть страничка, есть сервер, где она лежит. Что надо и где поменять/создать, чтобы пароль спрашивали?

skvoria

Создать .htaccess

al70

Где создать и что туда написать?

stalker33rus10

http://www.tutby.com/service/hosting/faq/#_Toc78009578
Не забудь в настройках апача поставить AllowOverride All на твою директорию.
Если инета нет - могу сюда кинуть.

uncle17

Кинь. Кстати. А если httpd.conf находится не в моих руках - то ни фига без звонка хостеру не сдлаешь?

skvoria

Скорее всего у хостера уже включен аллоу оверрайд, так что все ок.
Правда некоторые хостеры ни фига не разрешают даже htaccess пользоваться...

stalker33rus10

Как закрыть директорию паролем?
Вы можете воспользоваться файлом .htaccess — его следует положить в защищаемую директорию со следующим содержимым:
# Access file
order allow,deny
allow from all
require valid-user
Authname DirectoryName
Authtype Basic
AuthUserFile /home/./.passwd
Этот файл лучше положить в директорию недоступную через WWW. Узнать полный путь доступа к этому файлу лучше через SSH, для чего зайдите в директорию с файлом .passwd и наберите команду pwd.
Создать файл с паролями Вы можете на своем компьютере с помощью программы htpasswd. Наберите команду: htpasswd [-c].passwd username. Параметр -c нужен только в том случае, если Вы создаете новый файл с паролями. Если Вы хотите добавить нового пользователя к уже существующему файлу, то указывать -с не нужно. username — имя добавляемого пользователя. После того, как Вы нажмете ENTER, Вам нужно ввести (два раза во избежание ошибки) пароль для нового пользователя. Это все!
Также, файл с паролями можно формировать и из скрипта, например на Perl:
open(F, ">>.passwd") || die "
Can`t append file.passwd";
print F "$username:". crypt($password, "ms"). "n"; close(F);
system "chmod 766 .htpasswd";
где в переменных $username и $password — имя и пароль нового пользователя. Вместо "ms" можно подставлять любые две буквы.
Важно: чтобы увидеть файл .htaccess в списке файлов на сервере, в FTP-клиенте зачастую необходимо предварительно активировать опцию отображения скрытых файлов (пр. командой FTP Show Hidden Files в Total Commander).

Если httpd.conf не в твоих руках и в нем AllowOverride None то, боюсь, придется звонить хостеру.

uncle17

А у меня хостинг халявный . Правда, не в обычном понимании этого слова, но базу я себе два года выбивал:). Да наверное, включено.. надо попробовать.

uncle17

> Вы можете воспользоваться файлом .htaccess — его следует положить в защищаемую директорию
> Этот файл лучше положить в директорию недоступную через WWW.
А как бы эти два предложения совместить?:)

al70

А если человек F5 нажмет, то опять придется вводить пароль? Или это дело как-то запоминается?

stalker33rus10

> Этот файл лучше положить в директорию недоступную через WWW.

это про файл, в котором хранится пароль, а не .htaccess
2
запоминается, т.е. если ф5 нажмешь - все нормально будет

al70

Суть-то такая. Изучаю PHP и MySQL. Сделал так, что showtable.php выводит таблицу, killrow.php удаляет запись, addrow.php добавляет. Все три странички лежат в одной директории, и мне хочется, чтобы левый народ туда не ходил. В то же время есть опасение, что после выполнения, скажем, killrow.php и возврате по ссылке опять на showtable.php человека заставят снова вводить пароль, что не является приемлемым вариантом. В то же время, паролем должны быть защищены все файлы в директории, чтобы никто не смог выполнить killrow.php или addrow.php.

IvladV71

<Files killrow.php addrow.php>
AuthUserFile /home/www/.secret
AuthName "Please enter fucking password"
AuthType Basic
<Limit GET>
require user USER
</Limit>
</Files>

al70

Круто, спасибо. Только что-то не создается на сервере файл .htaccess и вообще файлы с точкой вначале.

IvladV71

чё за сервер?

al70

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

IvladV71

тока путь правильный до .secret укажи, а то работать не будет %)

al70

Да хер его знает, ничего не пойму. Ни таблички, ни текста. Вообще ничего не показывается.
На сервере такая структура:
[dir] cgi-bin
[dir] html
+ [dir] ...
+ [dir] secret
+ + мои 3 файла
+ + .htaccess
+ + .secret
+ [dir] ...
[dir] icons
.forward
Путь указан как AuthUserFile /home/secret/.secret. Верно?
Кстати, а в файле .secret что должно быть? Его только той прогой можно создавать?

IvladV71

/home/secret/.secret - это для примера
нужно указать путь, где он реально лежит
если у тебя виндовый сервак, то чё нить типа c:/work/.secret (слэши именно такие)
создать файл можно прогой htpasswd
если не ошибаюсь, в винде лежит где то в апачевских бинарниках
htpasswd -c .secret USERNAME

viktor954

Почему-то не упомянули такой способ, хотя судя по твоим требованиям он м.б. оптимален:


<?
function aut
{
header("WWW-Authenticate: Basic realm=\"Secure\"");
header("HTTP/1.0 401 Unauthorized");
echo "Enter password\n";
exit;
}
include_once "db/db.php" //в db.php запихнуто подключение к СКуЛ-серверу.
if(!isset($_SERVER["PHP_AUTH_USER"]) || !isset($_SERVER["PHP_AUTH_PW"] aut;
else {
$uname=strtolower($_SERVER["PHP_AUTH_USER"]);
$upass=$_SERVER["PHP_AUTH_PW"];
$result = mysql_query("select * from ADMINS where name='".$uname."'") or die(mysql_error;
if ($row = mysql_fetch_array($result{
if ($row['pass']==$upass)
{
//.....человек нормально авторизовался....
//...сюда либо вставить, либо инклюдить код, который должен исполняться в случае нормальной авторизации
}
else aut;
} else aut;
};
.....
?>

IvladV71

в таком случае нужно не проебаццо и не писать этот код на пхп 5.0.0
Оставить комментарий
Имя или ник:
Комментарий: