Иногда возникает потребность запаролить папку на веб-сервере, сама по себе задача тривиальная, но бывает к сайту есть только ftp-доступ, полный путь к папке неизвестен, да вообще-то и знать его не хочется, но есть желание сделать это как-нибудь по-быстрее.
Для этой цели сделан скрипт, его достаточно закинуть по ftp в нужную папку, предварительно установив требуемые значения переменных $user и $password, выполнить и удалить. Обязательное условие - наличие прав на запись в выбранную директорию.
<?
$user = 'user';
$password = 'mypass';
$dir = getcwd();
if( ! is_writeable( $dir ) )
{
print 'directory is not writeable.';
exit;
}
$hta = $dir . '/.htaccess';
$htp = $dir . '/.htpasswd';
$fh = @fopen( $htp, 'a' );
if( ! $fh )
{
print '.htpasswd open error.';
exit ;
}
fwrite( $fh, $user . ':' . crypt( $password ) . "\n" );
fclose( $fh );
$fh = @fopen( $hta, 'a' );
if( ! $fh )
{
print '.htaccess open error.';
exit;
}
$s = "AuthType Basic\n" .
"AuthName Private\n" .
"AuthUserFile $htp\n" .
"Require valid-user\n";
fwrite( $fh, $s );
fclose( $fh );
?>
Если запись в папку нежелательна, то вот такой скрипт сгенерит содержимое файлов:
<pre>
<?
$user = '1';
$password = '1';
$dir = getcwd();
$htp = $dir . '/.htpasswd';
print "-- .htpasswd\n";
print $user . ':' . crypt( $password ) . "\n\n";
$s = "AuthType Basic\n" .
"AuthName Private\n" .
"AuthUserFile $htp\n" .
"Require valid-user\n";
print "-- .htaccess\n";
print $s;
?>
</pre>