Вы не зашли.
Главная » PHP » Помогите с форумом
#1. WapStyle Off (3)
Участник
2009.05.28 14:02
Есть форум находится в папке /forum/ ...выгрузка файлов идёт в папку /sys/forum/files/ид_файла.frf (любой формат файла он преобразует в .frf)

Скачка должна идти по такой ссылке /forum/files/ид_файла/название файла.оригинальное_расширение_ файла

Так вот скачка не идёт пишет что типо не найдено.

Вот код откуда должно качать
Код:
// проверка на существование файла
if (isset($_GET['id']) && mysql_result(mysql_query("SELECT COUNT(*) FROM `forum_files` WHERE `id` = '".intval($_GET['id'])."'"),0)==1){
$file=mysql_fetch_array(mysql_query("SELECT * FROM `forum_files` WHERE `id` = '".intval($_GET['id'])."' LIMIT 1"));
 
if (is_file(H.'sys/forum/files/'.$file['id'].'.frf') && isset($user) && $user['level']>=1 && isset($_GET['del'])){
 
if (isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER']!=NULL){
$link =$_SERVER['HTTP_REFERER'];
}else{
$link='/index.php';}
 
mysql_query("DELETE FROM `forum_files` WHERE `id` = '$file[id]' LIMIT 1");
unlink(H.'sys/forum/files/'.$file['id'].'.frf');
 
if (isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER']!=NULL){
header("Location: $_SERVER[HTTP_REFERER]");
}else{
header("Location: /forum/index.php?".SID);}
}else if (is_file(H.'sys/forum/files/'.$file['id'].'.frf')){
mysql_query("UPDATE `forum_files` SET `count` = '".($file['count']+1)."' WHERE `id` = '$file[id]' LIMIT 1");
DownloadFile(H.'sys/forum/files/'.$file['id'].'.frf', $file['name'].'.'.$file['ras'],$file['type']);
exit;}
Вот функция DownloadFile
Код:
function DownloadFile($filename, $name, $mimetype='application/octet-stream'){
if (!file_exists($filename))
die('Файл не найден');
$from=0;
$size=filesize($filename);
$to=$size;
 
if(isset($_SERVER['HTTP_RANGE'])){
if (eregi ('bytes=-([0-9]*)',$_SERVER['HTTP_RANGE'],$range)){ // если указан отрезок от конца файла
$from=$size-$range[1];
$to=$size;
}elseif(eregi('bytes=([0-9]*)-',$_SERVER['HTTP_RANGE'],$range)){ // если указана только начальная метка
$from=$range[1];
$to=$size;
}elseif(eregi('bytes=([0-9]*)-([0-9]*)',$_SERVER['HTTP_RANGE'],$range)){ // если указан отрезок файла
$from=$range[1];
$to=$range[2];}
header('HTTP/1.1 206 Partial Content');
$cr='Content-Range: bytes '.$from .'-'.$to.'/'.$size;
}else{
header('HTTP/1.1 200 Ok');}
 
$etag=md5($filename);
$etag=substr($etag, 0, 8) . '-' . substr($etag, 8, 7) . '-' . substr($etag, 15, 8);
header('ETag: "'.$etag.'"');
header('Accept-Ranges: bytes');
header('Content-Length: ' .($to-$from));
 
if(isset($cr)){
header($cr);}
 
header('Connection: close');
header('Content-Type: ' . $mimetype);
header('Last-Modified: ' . gmdate('r', filemtime($filename)));
header("Last-Modified: ".gmdate("D, d M Y H:i:s", filemtime($filename))." GMT");
header("Expires: ".gmdate("D, d M Y H:i:s", time() + 3600)." GMT");
$f=fopen($filename, 'rb');
 
 
if(eregi('^image/',$mimetype)){
header('Content-Disposition: filename="'.$name.'";');
}else{
header('Content-Disposition: attachment; filename="'.$name.'";');}
 
fseek($f, $from, SEEK_SET);
$size=$to;
$downloaded=0;
while(!feof($f) and ($downloaded<$size)){
$block = min(1024*8, $size - $downloaded);
echo fread($f, $block);
$downloaded += $block;
flush();}
fclose($f);}
Помогите кто может...
Отредактировано WapStyle (2009.05.28 14:02)
#2. WapStyle Off (3)
Участник
2009.05.28 15:03
Вот есть резкльтат:
Вот если начать качать так
http://сайт.ру/forum/files/ид_файла/имя_файла.оригинал_расширение - выдаст что не найдено
а если качать так
http://сайт.ру/forum/files/ид_файла/имя_файла.frf - качает.

Но как теперь сделать чтоб расширение обратно менял?
#3. Gemorroj Off (107)
Administrator
2009.05.28 15:03
ну прально, файла же по пути с реальным расширением нету. нужен мод реврайт. что в .htaccess ? и режут глаза ереги. тут на форуме есть моя функция отдачи файлов с докачкой, используй лучше ее.
#4. WapStyle Off (3)
Участник
2009.05.28 15:03
Код:
php_value register_globals off
php_value session.use_trans_sid 1
DirectoryIndex index.php
AddDefaultCharset UTF-8
Options -Indexes
php_value session.cookie_lifetime 0
Options SymLinksIfOwnerMatch
RewriteEngine On
 
 
 
 
##Попадаем в редактирование поста
RewriteRule ^([0-9]*)/([0-9]*)/([0-9]*)/([0-9]*)/cit index.php?id_forum=$1&id_razdel=$2&id_them=$3&id_post=$4&act=cit&page=end [L,QSA]
RewriteRule ^([0-9]*)/([0-9]*)/([0-9]*)/([0-9]*)/msg index.php?id_forum=$1&id_razdel=$2&id_them=$3&id_post=$4&act=msg&page=end [L,QSA]
RewriteRule ^([0-9]*)/([0-9]*)/([0-9]*)/([0-9]*)/edit index.php?id_forum=$1&id_razdel=$2&id_them=$3&id_post=$4&act=edit&page=end [L,QSA]
RewriteRule ^([0-9]*)/([0-9]*)/([0-9]*)/([0-9]*)/delete index.php?id_forum=$1&id_razdel=$2&id_them=$3&id_post=$4&act=delete&page=end [L,QSA]
 
 
##Попадаем в тему
RewriteRule ^([0-9]*)/([0-9]*)/([0-9]*)/d_file([0-9]*)$ index.php?id_forum=$1&id_razdel=$2&id_them=$3&f_del=$4&page=end [L,QSA]
RewriteRule ^([0-9]*)/([0-9]*)/([0-9]*)/new$ index.php?id_forum=$1&id_razdel=$2&id_them=$3&act=new&page=end [L,QSA]
RewriteRule ^([0-9]*)/([0-9]*)/([0-9]*)/?$ index.php?id_forum=$1&id_razdel=$2&id_them=$3 [L,QSA]
RewriteRule ^([0-9]*)/([0-9]*)/([0-9]*)/mark/(.*)$ index.php?id_forum=$1&id_razdel=$2&id_them=$3&mark=$4 [L,QSA]
 
 
 
##Попадаем в раздел
RewriteRule ^([0-9]*)/([0-9]*)/?$ index.php?id_forum=$1&id_razdel=$2 [L,QSA]
 
##Попадаем в подфорум
RewriteRule ^([0-9]*)/?$ index.php?id_forum=$1 [L,QSA]
 
## Файлы
RewriteRule ^files/delete/([0-9]*)/ files.php?id=$1&del [L,QSA]
RewriteRule ^files/([0-9]*)/ files.php?id=$1 [L,QSA]
#5. Gemorroj Off (107)
Administrator
2009.05.28 15:03
RewriteRule ^files/([0-9]+).*/ files.php?id=$1 [L,QSA]
последнюю строку в .htaccess попробуй замени на эту.
#6. WapStyle Off (3)
Участник
2009.05.28 15:03
не робит.
Может трабла в коде (1пост 1код 21 строка)

З.Ы. твою фукцию я не нашол  sad
Добавлено спустя   6 минут  27 секунд:
Во прикол ввожу на скачку http://newep.ru/forum/files/1/DJ_Solovey_Kazantip_2009_radio_edit.frf при скачке опера (комповская) выдала что качается файл DJ_Solovey_Kazantip_2009_radio_edit.mp3

Это как так???

А вот через эту не хочет качать http://newep.ru/forum/files/1/DJ_Solovey_Kazantip_2009_radio_edit.mp3
Отредактировано WapStyle (2009.05.28 15:03)
#7. Gemorroj Off (107)
Administrator
2009.05.28 16:04
так, ты же в адресной строке браузера что воодишь? ссылку с реальным именем и расширением? я так понимаю скрипт вообще не срабатывает, т.к. мод реврайт не переадресует на него.
#8. WapStyle Off (3)
Участник
2009.05.28 16:04
В алресной строке ввожу
http://newep.ru/forum/files/1/DJ_Solovey_Kazantip_2009_radio_edit.frf - качает DJ_Solovey_Kazantip_2009_radio_edit.mp3
Пишу
http://newep.ru/forum/files/1/DJ_Solovey_Kazantip_2009_radio_edit.mp3 - пишет что не найдено
#9. Gemorroj Off (107)
Administrator
2009.05.28 16:04
ну так почему оно должно быть найдено, если такого файла нет?????
и в .htaccess не определен обработчик перехватывающий подобные ссылки.
в конце .htaccess напиши
RewriteRule ^files/([0-9]+)/.* files.php?id=$1 [L,QSA]
#10. Casper Off (-1)
Модератор-невидимка
2009.06.02 15:03
Подскажите, как сделать, чтоб мой ник, в посте, например, если обращаются ко мне, был выделен?
Страниц: 1 2 Все
Главная
WEB
PunBB Mod v0.6.2
0.014 s