Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Сохранение файла

Сообщения:  [1-10]    [11-20]  [21-26] 

 
 автор: Buhen   (23.08.2007 в 11:37)   письмо автору
 
   для: Buhen   (23.08.2007 в 09:15)
 

Почему GET параметры не срабатывают???

   
 
 автор: Buhen   (23.08.2007 в 09:15)   письмо автору
 
   для: Yuriev   (22.08.2007 в 16:42)
 

Короче я решил сделать так:
Вот ссылка на скачивание файлов:(она находится в скрипте downloads.php)

                            <?
                              
echo "<A class='normlink' HREF='downloads_result.php?cat_id=".$_GET['cat_id']."&id_download=".stripslashes($row_download->id_download)."'>";       
                              echo 
"Загрузить";
                             
$file $row_download->download_file;
                             
$category $row_download->category_file;
                             echo 
"</A>"
?>

значения в ссылке правильно подсталяются то есть например ссылка такого примерно вида получается:
http://arkcs.ru/downloads_result.php?cat_id=2&id_download=35
Вот сам файл котрый обрабатывает ссылку:
downloads_result.php


<?
include_once ("includes/actions.php");
connect_db();
 if ((isset(
$_GET['cat_id'])) AND ($_GET['cat_id'] != "") AND (isset($_GET['id_download'])) AND ($_GET['id_download'] != ""))
 {

      if((
is_numeric($_GET['id_download'])) AND (is_numeric($_GET['cat_id'])))
      {
            
$query="SELECT * FROM downloads,cat WHERE id_download=".$_GET['id_download']." AND ".$_GET['id_download']."=".$_GET['id_download']."";
            
$result mysql_query ($query);
           if (
mysql_errno()!= 0)
            {
                echo 
"<p class='navig'>Данный файл не существует</p>";
            }
           else
            {
                 if (
mysql_num_rows ($result) == 0)
                 {
                  echo 
"<p class='navig'>Данный файл не существует</p>";
                 }
                    else
                     {
                        
$row mysql_fetch_object($result);
                        
$downloads_file $row->downloads_file;
                        
$download_file $row->download_file;
                        
$category_file $row->category_file;
                        
$downloads_file++;
                        
$query "UPDATE downloads SET downloads_file=$downloads_file WHERE id_download=".$_GET['id_download']."";
                        
mysql_query($query);
                        
                        
$pathtofile="files/$category_file/$download_file";
                        
header("Content-Type: ".filetype("$pathtofile")); 
                        
header("Content-Length: ".filesize("$pathtofile")); 
                        
header("Content-Disposition: attachment; filename=$pathtofile"); 
                        
header("Content-type: application/force-download"); 
                        
header("Content-type: application/octet-stream"); 
                        echo 
file_get_contents ("$pathtofile");
                        exit;
                 }
          }
      }
      else
      {
      echo 
"ХАКЕР";
      }
close_db();
?>


Но почему то пройдя по ссылке появляется только пустой документ а должна начинаться закачка!

   
 
 автор: Yuriev   (22.08.2007 в 16:42)   письмо автору
 
   для: Buhen   (22.08.2007 в 15:04)
 

>Кто нибудь знает почему так?

Ясновидящих нет и поэтому никто не знает как слеплен сайт.
Раз вставляете header в тело документа, отправляемого в браузер, скачиваемый файл и вставляется абракадаброй в тело документа.
Я ж вверху писал, что должно работать только одно: или код на скачивание или остальной код страницы.

>Но когда я например набираю в адресной строке:
http://адрес моего сайта/downloads.php то появляется диалогове окно для скачивания файла.

Так может надо изменить ссылки
с http://адрес моего сайта/index.php?page=downloads&cat_id=2&id_download=35
на http://адрес моего сайта/downloads.php?page=downloads&cat_id=2&id_download=35

   
 
 автор: Buhen   (22.08.2007 в 15:04)   письмо автору
 
   для: Buhen   (22.08.2007 в 13:30)
 

Кто нибудь знает почему так?

   
 
 автор: Buhen   (22.08.2007 в 13:30)   письмо автору
 
   для: sim5   (22.08.2007 в 12:53)
 

Короче я понял. Почему то когда например я набираю файл в котором например такой код:
<?
                        $pathtofile
="file.rar";
                        
header("Content-Type: ".filetype("file.rar")); 
                        
header("Content-Length: ".filesize("file.rar")); 
                        
header("Content-Disposition: attachment; filename=file.rar"); 
                        
header("Content-type: application/force-download"); 
                        
header("Content-type: application/octet-stream"); 
                        echo 
file_get_contents ("file.rar");
?>


Когда в адресной строке набираю например
http://адрес моего сайта/index.php?page=downloads&cat_id=2&id_download=35 Не появляется диалогове окно для скачивания а файл просто открывается в виде иероглифов.
Но когда я например набираю в адресной строке:
http://адрес моего сайта/downloads.php то появляется диалогове окно для скачивания файла.
Кто нибудь объяснит в чем дело?

   
 
 автор: sim5   (22.08.2007 в 12:53)   письмо автору
 
   для: Buhen   (22.08.2007 в 12:15)
 

У вас проблемы не с кодом скачивания как таковым... Почему бы вам четко не разделить код на часть запроса на скачивание файла, на часть загрузки файла, и собственно вывод страницы. Уж извините, но у меня ощущение хаоса, может в нем и причина.

   
 
 автор: Buhen   (22.08.2007 в 12:15)   письмо автору
 
   для: Yuriev   (22.08.2007 в 11:39)
 

А мне то как исправить свой код?

   
 
 автор: Yuriev   (22.08.2007 в 11:39)   письмо автору
 
   для: Buhen   (20.08.2007 в 11:35)
 

<?
//Это Ваш файл index.php
if ($_GET['id_download']) {//запрошено скачивание
    //выясняем какой запрошен файл
    
if ($_GET['id_download']==35$path='sk-2006.rar';
    if (!
file_exists($path$message 'Передачи файла не будет по причине ненайденности';
    else {
      
$type 'application/x-rar';
      
$filename='sk-2006.rar';  
      
header("Content-Type: \"$type\"");
      
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
      
header("Content-Disposition: attachment; filename= \"$filename\"");
      
fpassthru(fopen($path,"rb"));
    }
    
//если сюда выполнение кода дошло, значит запрошено скачивание и всё нормально
    //и после exit ничего больше работать не должно
    
exit;
}
//если сюда выполнение кода дошло, значит запрошена страница, а не скачивание
//или запрошено скачивание, но файл не найден
//Далее идёт старый код страницы index.php
?>
<html>
<head>
<title>Моя страница</title>
</head>
<body>
<?
if ($message) echo $message;
?>
<a href="index.php?page=downloads&cat_id=2&id_download=35">Скачать файл sk-2006.rar</a>
</body>
</html> 

Работает так.
Если запрошена индекс.пхп без параметра, то код на скачивание не выполняется, а грузится страница обычным образом.
Если запрошено скачивание и файл найден, то работает только код на скачивание, в браузере выскакивает окно на сохранение файла, страница не перегружается.
Если запрошено скачивание и файл не найден, то код на скачивание не работает, страница перегружается и на ней печатается сообщение о ненайденности.

   
 
 автор: Yuriev   (22.08.2007 в 11:27)   письмо автору
 
   для: Buhen   (21.08.2007 в 15:20)
 

Как же нету ? А куча HTML-кода идёт до скрипта скачивания файлов!!!
Должно выполняться или только код на скачивание или остальное!!!!!!

   
 
 автор: Buhen   (22.08.2007 в 11:12)   письмо автору
 
   для: sim5   (22.08.2007 в 10:57)
 

Я понял что реальный файл вот создал для пробы на сайте у себя файл file.rar. Ну если так то тогда надо заменить строки где идет загрузка файлов вот так:
Но это дело не меняет. Файл открывается а должен скачиваться!

                        $row = mysql_fetch_object($result);
                        $downloads_file = $row->downloads_file;
                        $download_file = $row->download_file;
                        $category_file = $row->category_file;
                        $downloads_file++;
                        $query = "UPDATE downloads SET downloads_file=$downloads_file WHERE id_download=".$_GET['id_download']."";
                        mysql_query($query);
                        $pathtofile="files/$category_file/$download_file";
                        header("Content-Type: ".filetype("$pathtofile")); 
                        header("Content-Length: ".filesize("$pathtofile")); 
                        header("Content-Disposition: attachment; filename=$pathtofile"); 
                        header("Content-type: application/force-download"); 
                        header("Content-type: application/octet-stream"); 
                        echo file_get_contents ("$pathtofile");
                        exit;

   

Сообщения:  [1-10]    [11-20]  [21-26] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования