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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Как сделать, чтобы при скачивании файла, использующего счетчик, не выскакивало новое пустое окно?
 
 автор: JC_Piligrim   (21.06.2005 в 11:58)   письмо автору
 
 

Здравствуйте!

Пишу download-скрипт на сайте, использующий счетчик скачиваний. Посылаю


Header ("Location: $url");


, где $url - ссылка на файл архива. Браузер предлагает сохранить файл, т.е. делает все, как надо, но попутно с этим, открывается новая пустая страница в новой вкладке/окне. Как сделать так, чтобы это окно не открывалось, либо открываясь, сразу же исчезало? В первом варианте нужно посылать дополнительные заголовки? Подскажите, пожалуйста, как это делается у профессионалов. На многих сайтах все работает красиво и без дополнительных пустых окон/вкладок, которые потом с раздражением приходится закрывать.

   
 
 автор: cheops   (21.06.2005 в 12:20)   письмо автору
 
   для: JC_Piligrim   (21.06.2005 в 11:58)
 

Смысл такой: нужно в ссылке на загрузку файла указать текущую страницу, но с некоторым параметром index.php?down=file и по нему проверять, что это не просто открытие страницы, а загрузка файла
<?php
  
if(isset($_GET['down'])) header ("Location: $url");
?>

В этом случае посетитель будет оставаться на текущей странице

   
 
 автор: JC_Piligrim   (21.06.2005 в 12:52)   письмо автору
 
   для: cheops   (21.06.2005 в 12:20)
 

Один ньюанс - скачивание возможно только при авторизации пользователя на сайте.

Я, наверное, пошел несколько извращенским путем, делая движок для сайта. =(
Дело вот в чем. Index.php устроен так:


<?php require_once('engine.php'); ?><html>
<head>...</head>
<body>
<?php echo $content?>
</body>
</html>


Т.е. к такому "недошаблону" в начале подключается движок, который подключает, в свою очередь, в зависимости от переданных скрипту параметров подключает текущие модули, которые уже что-либо делают. Немного своеобразное подобие фреймворка, в котором описаны сервисные функции, типа формирования ссылок, удобной работы с файлами и пр, константы, переменные... И поэтому приходится, когда пользователь щелкает по ссылке запускать внешний скрипт "get.php", который проверяет права доступа пользователя к файлу, и в случае успеха, перенаправляет пользователя на файл... В таком случае можно что-либо придумать с запретом новых окон, не изменяя существующей структуры? Меня все больше и больше одолевает сомнения, о возможности этого, но может быть, кто-нибудь с этим сталкивался, и знает, как преодолеть?

   
 
 автор: cheops   (21.06.2005 в 13:01)   письмо автору
 
   для: JC_Piligrim   (21.06.2005 в 12:52)
 

Хм... а почему get.php, может его тоже включить в страницу при помощи require_once()? А в случае успеха он будет не пересылать пользователя, а посылать ему HTTP-заголовок Location с URL файла, который требуется загрузить?

   
 
 автор: JC_Piligrim   (22.06.2005 в 12:51)   письмо автору
 
   для: cheops   (21.06.2005 в 13:01)
 

Уже сделано! Спасибо, работает! Решил не мучиться, и сделал все в одном файле.

   
Rambler's Top100
вверх

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