с помощью генератора вы можете сделать это так, лучше, читабельнее и более питонически
B = [3,6,5,7,8,10]
def function_1(A):
for i in range(len(A)//2):
factor = A[2*i]
yield factor
result = list(function_1(B))
# output [3, 5, 8]
При использовании PHP у Вас может быть сценарий, который связывает пользователя с загрузкой, но только если $_SERVER['HTTP_REFERER']
от Вашего сайта. Если это не Вы, перенаправляют на Ваш сайт.
Ваш сайт размещается веб-сервером Apache, таким образом, необходимо смочь сделать следующее в httpd.conf сайта (или виртуальный блок хоста)
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com/ [NC]
RewriteRule ^/PublicFiles/ /page-about-direct-links.html
Это в основном говорит:
Больше информации о mod_rewrite может быть найдено здесь: mod_rewrite - Apache Сервер HTTP
Не предоставляйте прямую ссылку на файл, которому Вы служите. Предоставьте сценарий, который отправляет содержание через сценарий, после того как Вы поражаете кнопку отправки.
Сделайте веб-поиск отправки файлов через cgi.
Вот аккуратная ссылка, которую я нашел онлайн: здесь
Почему не только делают ссылки динамичными и косвенными, например:
на странице X: (статичный)
<a href="Y">SuperNeat Program</a>
на странице Y: (динамично сгенерированный)
Click here to download
<a href="Z.php?timestamp={timestamp}&counter={counter}&hash={hash}">
SuperNeat Program</a>
и замена добавляет метку времени к w/текущее время в msec с 1970, счетчик = счетчик, который Вы увеличиваете однажды на загрузку, хеш =, хеш MD5 конкатенирует (метка времени, счетчик, секретная соль), где секрет солит = любой любимый код, Вы держите в секрете.
Затем на странице Z.php, Вы просто повторно вычисляете хеш из счетчика и метки времени в строке запроса, проверяете, что это соответствует хешу в строке запроса, и что метка времени является недавней (например, с предыдущих 30 минут или 60 минут или безотносительно). Если это, то служите рассматриваемому файлу. Если это не, бросьте сообщение об ошибке. Это дает кому-то только краткий период времени прямой ссылке на Ваш файл. Если Вы даже не хотите это, то отслеживаете встречные значения, полученные в строке запроса Z.php, и не принимаете их несколько раз.
Я нисколько не веб-эксперт, но я думал о следующем указателе -
если Вы используете asp.net, мог http обработчики или модули, настроенные в справке уровня веб-сайта (партия информации о тех, которые в сети, я недавно искал ее для некоторой работы, вот одна статья, например.
Идея состоит в том, чтобы прервать запрос, прежде чем это достигнет конечного файла, и перенаправьте его к странице, которую Вы хотите показать; например - если кто-то хочет просмотреть к URL, Вы отправили ("http://sy-stu.org/stu/PublicFiles/StdLibrary/Exam.zip"), прерывают этот вызов, используют некоторый поиск для нахождения страницы, Вы хотите отобразить и перенаправить запрос там; я предполагаю, что пользователи, переходящие по ссылке, не будут слишком раздражаться (если они не сделали, "сохраняют объект как", который закончился бы их сохраняющий некоторый HTML и не ZIP).
Однако существует некоторая "дыра" в моем плане - как Вы на самом деле предоставляете ссылку, которая работает от Вашей собственной страницы? Я полагаю, что можно дифференцироваться между запросами, прибывающими из веб-сайта и, прибывающих из других, который Вы могли проверить обработчик/модуль путем исследования объекта запроса.