ОБСУЖДЕНИЕ

Как скрыть прямую ссылку на файл?

20 сообщений1 просмотровЗакрыта
#1
Файл load.php

<?php

include 'moduls/ini.php';
include 'moduls/connect.php';
include 'moduls/fun.php';
###############Проверка переменных###############

$id = intval($_GET['id']);
###############Получаем инфу о файле###########
$d = mysql_fetch_row(mysql_query('SELECT TRIM(`path`), `url_clip` FROM `files` WHERE `id` = '.$id.' LIMIT 1'));
click_change();

if(file_exists($d[0]) || $d[1]!=''){
mysql_query('UPDATE `files` SET `loads`=`loads`+1, `loads_month`=`loads_month`+1, `timeload`='.$time.' WHERE `id`='.$id);


if($d[1]!=''){
header('Location: '.$d[1], true, 301);
exit;
}
$tex2=$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.$d[0];
$tex2=str_replace('\/','/',$tex2);
header('Location: http://'.$tex2,true,301);
}
else{
print $hackmess;
}
?>
#2
Смысл ?
#3
Maksamka, Мне нужно чтоб при скачке файла пользователь видел только имя файла а не прямую ссылку на файл
#4
sViy, Юзай штекер .+ файл скачки переписывать нужно.
#5
Тебе нужно только название файла? Без скачки?
#6
Наверно он хочет скрыть реальное местоположение файла.
Скорее всего защиту от грабинга хочет сделать ?
#7
lokki00003, Да, именно такое нужно
#8
Примерно так
<?php
$url = 'ссылка на реальный файл';

$info = get_headers($url, 1);

foreach ($info as $key=>$value)
{
header(''.$key.': '.$value.'');
}
header ("Content-Disposition: attachment; filename=".trim($_GET['name'])."");

readfile($url);
?>
#9
lokki00003, Примерно так, да не так, помоги заточить под код что выше
#10
sViy,
PHP
<?php

include 'moduls/ini.php';
include 'moduls/connect.php';
include 'moduls/fun.php';
###############Проверка переменных###############

$id = intval($_GET['id']);
###############Получаем инфу о файле###########
$d = mysql_fetch_row(mysql_query('SELECT TRIM(`path`), `url_clip` FROM `files` WHERE `id` = '.$id.' LIMIT 1'));
click_change();

if(file_exists($d[0]) || $d[1]!=''){
mysql_query('UPDATE `files` SET `loads`=`loads`+1, `loads_month`=`loads_month`+1, `timeload`='.$time.' WHERE `id`='.$id);



$tex2=$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.$d[0];
$tex2=str_replace('\/','/',$tex2);
$filename = 'http://'.$tex2;
 

if (!file_exists($filename)) {
  header ("HTTP/1.0 404 Not Found");
  exit;
}
 

$fsize = filesize($filename);

$ftime = date("D, d M Y H:i:s T", filemtime($filename));

$range = 0;
 

$handle = @fopen($filename, "rb");


if (!$handle){
  header ("HTTP/1.0 403 Forbidden");
  exit;
}
 

if ($_SERVER["HTTP_RANGE"]) {
  $range = $_SERVER["HTTP_RANGE"];
  $range = str_replace("bytes=", "", $range);
  $range = str_replace("-", "", $range);
  
  if ($range) fseek($handle, $range);
}
 

if ($range) {
  header("HTTP/1.1 206 Partial Content");
} else {
  header("HTTP/1.1 200 OK");
}
 
header("Content-Disposition: attachment; filename=\"{$filename}\"");
header("Last-Modified: {$ftime}");
header("Content-Length: ".($fsize-$range));
header("Accept-Ranges: bytes");
header("Content-Range: bytes {$range}-".($fsize - 1)."/".$fsize);
 

if(isset($_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))
  Header('Content-Type: application/force-download');
else
  Header('Content-Type: application/octet-stream');
 
while(!feof($handle)) {
  $buf = fread($handle,512);
  print($buf);
}
 
fclose($handle);
}
else{
print $hackmess;
}
?>
#11
Karayazi, Parse error: syntax error, unexpected '{' in /home/eroru/public_html/mp4/load.php on line 60
#12
<?php
include 'moduls/ini.php';
include 'moduls/connect.php';
include 'moduls/fun.php';
###############Проверка
переменных###############
$id = intval($_GET['id']);
###############Получаем
инфу о файле###########
$d = mysql_fetch_row
(mysql_query('SELECT TRIM
(`path`), `url_clip` FROM `files`
WHERE `id` = '.$id.' LIMIT 1'));
click_change();

//если файл существует

if(file_exists($d[0]) || $d[1]!=''){
mysql_query('UPDATE `files` SET
`loads`=`loads`+1,
`loads_month`=`loads_month`+1,`timeload`='.$time.' WHERE `id`='.$id);
//пишешь количество скачек и отдаешь файл
$url = 'то что нужно из mysql запроса то есть ссылка на сам файл';
$info = get_headers($url, 1);
foreach ($info as $key=>$value)
{
header(''.$key.': '.$value.'');
}
header ("Content-Disposition:
attachment; filename=".trim
($_GET['name'])."");
readfile($url);
}
?>

//теперь зайдя в файл load.php с id допустим 10 пользователь увидит ( ниче не увидит ) в заголовке load.php
при скачке файла будет файл

load.mp4 если видео
load.jpg если фото итд
#13
Не может быт, у меня нет никаких ошибок.
Ааа, теперь я понял, здесь ббкод обрезает экранирование, filename="{$filename}" надо экранировать обратным слешом: filename=\"{$filename}\"
#14
lokki00003, Твой код сработал, очень сильно тебе благодарен
А как сделать чтоб вместо load.mp4 ,выводило имя файла, например site.ru_!Krasotka.mp4
#15
Karayazi, Имеешь ввиду нужно прописать в коде так
header("Content-Disposition: attachment; filename="\{$filename}\"");
header("Last-Modified: "\{$ftime}\"");
header("Content-Length: ".($fsize-$range));
header("Accept-Ranges: bytes");
header("Content-Range: bytes "\{$range}\"-".($fsize - 1)."/".$fsize);
#16
вместо trim($_GET['id']) все что угодно вставляй например $file['name'] или какая там у тебя переменная из mysql имя файла
#17
$d['name']
#18
Nu da...
#19
Смешно :)
Других учу а у самого полный бардак
#20
Тему закрыл sViy!
Причина: Решено