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

Форум PHP

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

 

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

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

тема: Как установить срок действия уникальной ссылки для скачивания?
 
 автор: coloboc66   (04.10.2007 в 15:05)   письмо автору
 
 

Если никто не может показать скрипт, то каков сам принцип такого дела?

   
 
 автор: bronenos   (04.10.2007 в 15:14)   письмо автору
 
   для: coloboc66   (04.10.2007 в 15:05)
 

в базу заносите ключ, например, и срок действия с файлом, доступ к которому она дает
и все махинации с этой записью

   
 
 автор: coloboc66   (04.10.2007 в 15:38)   письмо автору
 
   для: bronenos   (04.10.2007 в 15:14)
 

Ну хорошо, занёс я в базу ключ, например kghj;HDSGIKHJ'h'gh'h и срок действия в часах, например 4 . А дальше-то что? Как дальше этот срок использовать? Или можно в РНР ограничить время доступа к конкретному файлу? Или как?

   
 
 автор: coloboc66   (04.10.2007 в 15:38)   письмо автору
 
   для: bronenos   (04.10.2007 в 15:14)
 

Ну хорошо, занёс я в базу ключ, например kghj;HDSGIKHJ'h'gh'h (по этому ключу я смогу найти имя файла) и срок действия в часах, например 4 . А дальше-то что? Как дальше этот срок использовать? Или можно в РНР ограничить время доступа к конкретному файлу? Или как?

   
 
 автор: ZeeG   (04.10.2007 в 15:48)   письмо автору
 
   для: coloboc66   (04.10.2007 в 15:38)
 

С помощью метки времени вы и устанавливаете правила на скачивание.
Как я понимаю:
1 переходим по ссылке www.site.ru?tr=var на страницу, var - ключ
2 скрипт на странице проверяет промежуток времени, что вы задали ну и так далее
Сам не делал, но порядок, думаю, такой.

   
 
 автор: skazi   (04.10.2007 в 15:49)   письмо автору
 
   для: coloboc66   (04.10.2007 в 15:38)
 

либо повесить на крон(что не оч удобно)
либо в начале этого php файла сделать проверочку, типа этой:
$query = "DELETE FROM uniq_url WHERE date < NOW() - INTERVAL '20' MINUTE";

где date время, когда была выдана уник. ссылка. интервал можете ставить свой...

думаю это поможет...


*строка запроса отсюда http://softtime.ru/scripts/online.php

   
 
 автор: skazi   (04.10.2007 в 16:06)   письмо автору
 
   для: coloboc66   (04.10.2007 в 15:05)
 

на кронтаб имел ввиду повесить файл, который, скажем каждые минут 5-10 будет удалять записи время существования которых >=час

   
 
 автор: bronenos   (04.10.2007 в 16:26)   письмо автору
 
   для: skazi   (04.10.2007 в 16:06)
 

зачем кронтаб?
прямо при запросе чистить можно

   
 
 автор: skazi   (04.10.2007 в 16:39)   письмо автору
 
   для: bronenos   (04.10.2007 в 16:26)
 

ну это просто еще один вариант решения данной проблемы....

   
 
 автор: coloboc66   (04.10.2007 в 17:22)   письмо автору
 
   для: skazi   (04.10.2007 в 16:39)
 

У меня сайт на файлах, а не на БД, но это не принципиально, я думаю. Вопрос вот в чём: данные о времени РНР возвращает в строковом типе. Как же здесь вычислять разницу между текущим и запомненным временем? Выделять из строки данные о минутах или часах и конвертировать их в числовой тип?

   
 
 автор: Unkind   (04.10.2007 в 17:46)   письмо автору
 
   для: coloboc66   (04.10.2007 в 17:22)
 

При использовании математических операторов PHP автоматически преобразует строку в числовой тип.

   
 
 автор: wawilon   (05.10.2007 в 11:39)   письмо автору
 
   для: coloboc66   (04.10.2007 в 17:22)
 

Необходимо перевести дату в секунды. Тогда будет очень просто сравнить (одна минус другая меньше чем 3600*4).
Так что делаем что то типо такого:

<?php
$time 
time();
$query "select ... from ... where `date`+14400<".time();
?>

   
 
 автор: coloboc66   (05.10.2007 в 12:42)   письмо автору
 
   для: wawilon   (05.10.2007 в 11:39)
 

Классное решение!!! Только я решил вычислять разность между текущим и записанным временем.

if($time-$item_time<$time_key*3600)return $itemid;else delete_string($itemid);

Логика вроде правильная?

   
Rambler's Top100
вверх

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