<MyRusakov.ru />

PHP и MySQL с Нуля до Гуру

PHP и MySQL с Нуля до Гуру

Данный курс - это более 20-ти часов видеоуроков по изучению PHP и MySQL. Ключевой момент курса - это создание движка для сайта с нуля. Каждая строчка комментируется. Практически для каждого урока имеются упражнения. Причём данные упражнения направлены не только на закрепление материала, но и на реализацию реальных задач, встающих перед Web-разработчиками при создании сайтов. После курса Вы сможете без проблем создавать движки для любых сайтов.

Также почти к каждому уроку идут упражнения для закрепления материала.

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

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Как скрыть URL скачиваемого файла на PHP

Как скрыть URL скачиваемого файла на PHP

Вы, наверняка, встречали сайты, где Вы пытались скачать какой-то файл, однако, прямой URL к нему Вы не получали. Была какая-то временная ссылка, уникальная только для Вас, файл нормально скачивался, но прямую ссылку никто не раскрывал. В этой статье мы с Вами разберём, как скрыть URL скачиваемого файла на PHP.

Сразу приступим к коду:

<?php
  function download($filename) {
    if (file_exists($filename)) {
      /* Если файл существует */
      header("Content-Disposition: attachment; filename='" . basename($filename) . "';"); // Указываем имя при сохранении в браузере
      echo file_get_contents($filename); // Отдаём файл пользователю на скачивание
    }
    else echo "Not Found"; // Если файла не существует
  }
  download("book.pdf");
?>

Если обратиться к этому скрипту, то начнётся скачивание файла book.pdf, однако, ни названия файла, ни директории, в которой лежит файл, пользователь не увидит, если Вы этого сами не захотите.

Какие открываются возможности, если использовать такое скрытие URL скачиваемого файла? Во-первых, никто не знает прямых ссылок, а это позволяет Вам перед скачиванием прокрутить рекламу. Это защищает от ботов, которые пытаются выкачать Ваш сайт целиком. Это позволяет вести статистику количества скачиваний файлов. Это позволяет запретить отдельным пользователям скачивание и так далее.

Как видите, возможностей очень много, а в основе лежит этот простенький скрипт на PHP.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (13):

lobanov lobanov 02.05.2013 14:36:19

Что-то я не совсем понял работу этого скрипта. Если я засуну его в определенную страницу, например на страницу после оплаты, то при загрузке страницы откроется окно для скачивания этого файла. После сохранения файла. пойдет загрузка. Но человек сможет взять и скопировать адрес к этой странице и отдать другу - и все, материал в сети! Смысл тогда от этого кода то?

Ответить

Admin Admin 02.05.2013 16:28:42

Так сделайте временную ссылку. В скрипте проверяется ссылка, и если она ещё действительна, то надо вызвать функцию download().

Ответить

lobanov lobanov 02.05.2013 16:29:56

Для меня это сейчас лес =)

Ответить

Admin Admin 02.05.2013 16:31:30

http://myrusakov.ru/php-how-study.html

Ответить

lobanov lobanov 02.05.2013 16:33:11

Спасибо большое! =)Буду учить все! =)

Ответить

lobanov lobanov 02.05.2013 16:46:52

Хочу сказать большое Вам спасибо за то, что правильно направили! =) Теперь правильно буду изучать PHP, ато в книгах очень много сказано, а я не понимаю. =( Думаю скоро приобрету Ваш видеокурс по PHP и MySQL, чтобы уж точно вооружится знаниями.

Ответить

kuller kuller 04.05.2013 15:44:57

чета за место файла скачивает htm страницу. Что не так <? $filename = $_GET['file']; function download($dir, $filename) { if(file_exists('./uploads/'.$dir.'/'.$filename)) { /* Если файл существует */ header("Content-Disposition: attachment; filename='" . basename($filename) . "';"); // Указываем имя при сохранении в браузере echo file_get_contents('./uploads/'.$dir.'/'.$filename); // Отдаём файл пользователю на скачивание }else echo "Not Found"; // Если файла не существует } download('price', $filename); ?>

Ответить

Admin Admin 04.05.2013 21:22:10

http://myrusakov.ru/php-finderror.html

Ответить

kuller kuller 04.05.2013 21:54:55

Чета все равно ничего не выходит. Даже оригинальный вариант тоже htm скачивает

Ответить

Admin Admin 05.05.2013 11:18:30

Убедитесь, что формат файла php и запускаете его правильно: http://myrusakov.ru/php-start.html

Ответить

kuller kuller 05.05.2013 21:19:59

вот и ошибка надо добавить header('Content-Description: File Transfer'); header('Content-Type: application/force-download'); мой вариант function download($dir, $filename) { $filename = "./uploads/".$dir."/".$_GET['file']; // $_GET['file'] - имя файла передаваемое по ссылке вида http://site.ru/download.php?file=файл if(file_exists($filename)) { header('Content-Description: File Transfer'); header('Content-Type: application/force-download'); header('Content-Length: ' . filesize($filename)); header('Content-Disposition: attachment; filename=' . basename($filename)); readfile($filename); }else echo "Not Found"; } download('price', $filename); // price папка где находится файл

Ответить

Aleks_H Aleks_H 19.03.2014 21:23:48

Здравствуйте Михаил. Подскажите пожалуйста как можно реализовать такой вариант: есть страница test.php.. ни в строке браузера, ни в исходном коде её нельзя будет увидеть.. в строке к примеру должен быть такой вид 0f2d5s4f52g55... время жизни 10 сек., при перезагрузке после 10 сек. пустое окно без редиректа на 404...Т.е. временная, динамическая ссылка на страницу. Подскажите пожалуйста. Спасибо.

Ответить

mogic mogic 30.06.2016 07:17:11

Здравствуйте, Алекс_Н! 1. в строке урл при шифровании укажите конец жизни ссылки (проблема: синхронизация + загруженность сервера = может возникнуть ситуация когда урл расшифруется, а время уже больше 10 секунд) 2. сохранить вид 0f2d5s4f52g55... и как только запрос поступит вывести инфу и удалить 0f2d5s4f52g55...

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.