Программирование > PHP

Чтение файла из закрытой зоны без ввода логина и пароля пользователем

(1/2) > >>

KiraSin:
Люди! Помогите!
Проблема:
Есть зарытая папка содержащие файлы. Доступ ограничен через .htaccess
Человек может получить доступ только в определнном случае, и только к определенному файлу.
Прямой линк работать не должен (в связи с этим файлы закрыты для всех .htaccess - ом)
Как мне дать нужный файл пользователю, логин и пароль указанный в .htaccess будет один для всех - он все равно явно не светится, а если кому-то надо будет непременно ломануть и так ломанут.
Вот надыбал такой код, к сожалению пишет - "I can\'t connect!"


define (\'x401_host\', \'http://site.com\');
define (\'x401_port\', 80);
define (\'x401_user\', \'user_login\');
define (\'x401_pass\', \'user_pass\');

/* Function */
function get401Page($file) {
   $out  = "GET $file HTTP/1.1\\r\\n";
   $out .= "Host: ".x401_host."t\\r\\n";
   $out .= "Connection: Close\\r\\n";
   $out .= "Authorization: Basic ".base64_encode(x401_user.":".x401_pass)."\\r\\n";
   $out .= "\\r\\n";

   if (!$conex = @fsockopen(x401_host, x401_port, $errno, $errstr, 10))
       return 0;
   fwrite($conex, $out);
   $data = \'\';
   while (!feof($conex)) {
       $data .= fgets($conex, 512);
   }
   fclose($conex);
   return $data;
}

header(\'Content-type: audio/mpeg\');
$localfilename = "http://site.com/path/full/".$file_name.".mp3";
header(\'Content-Disposition: attachment; filename="\'.$file_name.\'.mp3"\');
/* Code */
if ($source = get401Page($localfilename)) {
  echo $source;
} else {
  echo "I can\'t connect!";
}



Логин и пароль 100% указаны правильно - через прямую ссылку с вводом в окне авторизации файл получаю.

С путями тоже игрался, возможно и в них проблема, тогда подскажите как правильно путь указать

"http://site.com/path/full/".$file_name.".mp3";
"/path/full/".$file_name.".mp3";
и даже так:
"http://user_login:user_pass@site.com/sound/full/".$file_name.".mp3";

new_coder:
встречаем

echo "
<form action=\'".__YOU_SCRIPT."\' method=post>
<input type=hidden name=\'action\' value=\'aut\'>
<table>
<tr>
<td>
ID
</td>
<td>
<input  type=text name=\'login\'>
</td>
</tr>
<tr>
<tr>
<td>
пароль
</td>
<td>
<input type=password name=\'pass\'>
</td>
</tr>
<tr>
<td align=center colspan=2>
<input type=submit value=\'Войти\'></form>
</td>
</tr>
</table>
</form>";


if( $_REQUEST[\'action\'] === \'aut\')
{
$login = $_REQUEST[\'login\'];
$pass = $_REQUEST[\'pass\'];

if(($login === \'YOU_login\') && ($pass === \'YOU_pass\'))
{
session_name(\'SESNAME\');
session_start();
$_SESSION[\'authorized\'] = 1;
header("Location: ".__DOWN_SCRIPT);
}
}
               

отдаем файл

if(isset($_REQUEST[\'SESNAME\']))
{
session_name(\'SESNAME\');
session_start();
if( (isset($_SESSION[\'authorized\'])) &&  ($_SESSION[\'authorized\'] === 1) )
{

$path_file = "/YOU_FILE";

if(is_readable($path_file))
{
header("Pragma: no-cache");
header("Expires: ".gmdate("D, d M Y H:i:s")." GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);

header("Content-Type: application/force-download\\r\\n");
header("Content-Transfer-Encoding: binary\\r\\n");
header("Content-Length: ".(filesize($path_file))."\\r\\n");
header("Content-Disposition: attachment; filename=".basename($path_file)."\\r\\n");
readfile($path_file);
}
else
{
die("error");
}
}
else
{
die("need auth");
}

}

KiraSin:
Это простой способ авторизации через сессию.
Авторизацию я и так проверяю
Меня больше волнует вопрос - как достучаться до файла, если он лежит в закрытой папке .htaccess\'ом!
Вот этот путь закрыт:

$path_file = "/YOU_FILE"; 

и файл, этот скрипт, не получит! Пока не введешь логин и пароль в форму авторизации .htaccess
Т.е. пользователь не знает внутреннего логина и пароля, он знает только свой и авторизацию уже прошел
Если я дам ему внутренний логин и пароль он получит доступ ко всем файлам в папке, а мне надо чтобы он мог получить доступ только через мой скрипт и ни как иначе.
Т.е. авторизация и контроль доступа у меня уже есть.
Надо просто выдать файл из запароленной области так чтобы пользователь не увидель реального пути и не нужно было вводить пароль доступа к папке.
Вот такая вроде бы простая и, как мне кажется, эффективная защита, которая вроде бы как должна легко реализовываться, но почему-то работать не хочет.

CGVictor:
KiraSin

--- Цитировать ---KiraSin:
файл этот скрипт не получит!
--- Конец цитаты ---

Ерунду говорите.

KiraSin:

--- Цитировать ---Ерунду говорите.
--- Конец цитаты ---

Не вижу где передается логин и пароль для достпуа к файлу

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии