Вы не зашли.
Есть форум находится в папке /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 10:10)
Вот есть резкльтат:
Вот если начать качать так
http://сайт.ру/forum/files/ид_файла/имя_файла.оригинал_расширение - выдаст что не найдено
а если качать так
http://сайт.ру/forum/files/ид_файла/имя_файла.frf - качает.
Но как теперь сделать чтоб расширение обратно менял?
ну прально, файла же по пути с реальным расширением нету. нужен мод реврайт. что в .htaccess ? и режут глаза ереги. тут на форуме есть моя функция отдачи файлов с докачкой, используй лучше ее.
Код:
| 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] |
RewriteRule ^files/([0-9]+).*/ files.php?id=$1 [L,QSA]
последнюю строку в .htaccess попробуй замени на эту.
не робит.
Может трабла в коде (1пост 1код 21 строка)
З.Ы. твою фукцию я не нашол
Добавлено спустя 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 11:11)
так, ты же в адресной строке браузера что воодишь? ссылку с реальным именем и расширением? я так понимаю скрипт вообще не срабатывает, т.к. мод реврайт не переадресует на него.
В алресной строке ввожу
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 - пишет что не найдено
ну так почему оно должно быть найдено, если такого файла нет?????
и в .htaccess не определен обработчик перехватывающий подобные ссылки.
в конце .htaccess напиши
RewriteRule ^files/([0-9]+)/.* files.php?id=$1 [L,QSA]
#10.
Casper
Off
(-1)
Модератор-невидимка
2009.06.02 11:11
Подскажите, как сделать, чтоб мой ник, в посте, например, если обращаются ко мне, был выделен?
#11.
Casper
Off
(-1)
Модератор-невидимка
2009.06.02 12:12
Пытался вот так - не работает.
Код:
| $msg = output_text($post['msg']); |
| $us = $user['id']; |
| $msg = preg_replace('/(\S*)($us)(\S*)/isu', '<b>$us</b>', $msg); |
| echo $msg; |
а что требуется сделать вообще?
#13.
Casper
Off
(-1)
Модератор-невидимка
2009.06.02 14:02
Gemorroj, вот такое. Только чтоб свой ник в данном сообщении видел выделенным только ты
Добавлено спустя 1 минуту 35 секунд: То есть только тот, к кому обращаются
Код:
| $msg = preg_replace('/\S*'.preg_quote($us, '/').'\S*/isu', '<b>'.$us.'</b>', $msg); |
замени
#15.
Casper
Off
(-1)
Модератор-невидимка
2009.06.02 15:03
Спасибо!