Сразу на ум конечно пришло что надо на JavaScripts скрыть ссылку и по истечению времени выдавать ссылку НО с другой стороны если JavaScripts у юзера отключен то ссылка получается сразу будет видна или на худой конец юзер может ее взять в исходном коде. Как лучше это реализовать хоть примерно?
Спустя 5 минут, 52 секунды (12.02.2012 - 18:11) wplounge написал(а):
Можно, например, функцию sleep(время в секундах) применить, а ссылку выводить в iframe
Спустя 2 минуты, 40 секунд (12.02.2012 - 18:13) Семён написал(а):
bposter
при запросе к файлу, проверять ключ в сессии, если нет, ставить значение таймера и
запускать JS отсчёт от значения к 0, по истечению +1 секунду делать запрос на получение ссылки.
при запросе к файлу, проверять ключ в сессии, если нет, ставить значение таймера и
запускать JS отсчёт от значения к 0, по истечению +1 секунду делать запрос на получение ссылки.
Спустя 2 минуты, 23 секунды (12.02.2012 - 18:16) bposter написал(а):
Цитата (wplounge @ 12.02.2012 - 15:11) |
Можно, например, функцию sleep(время в секундах) применить, а ссылку выводить в iframe |
да точно можно и так в принцепи
Спустя 5 минут, 36 секунд (12.02.2012 - 18:21) bposter написал(а):
Цитата (Семён @ 12.02.2012 - 15:13) |
bposter при запросе к файлу, проверять ключ в сессии, если нет, ставить значение таймера и запускать JS отсчёт от значения к 0, по истечению +1 секунду делать запрос на получение ссылки. |
это уже сильно сложно
Спустя 12 минут, 49 секунд (12.02.2012 - 18:34) XCross написал(а):
1. Пользователь пришел на страницу скачивания. Во время генерации этой страницы в теплицу заносишь текущее время.
2. Страница сгенерирована, таймер на 0, идет запрос к скрипту на получение файла.
3. В скрипте берешь это время, прибавляешь 60 секунд. Если текущее время меньше, чем получившееся время, то шлешь лесом, если нет - отдаешь файл, удаляешь запись из теплицы.
2. Страница сгенерирована, таймер на 0, идет запрос к скрипту на получение файла.
3. В скрипте берешь это время, прибавляешь 60 секунд. Если текущее время меньше, чем получившееся время, то шлешь лесом, если нет - отдаешь файл, удаляешь запись из теплицы.
Спустя 5 минут, 37 секунд (12.02.2012 - 18:40) bposter написал(а):
ХМ так sleep останавливает весь php код гдебы он небыл прописан(((
А на странице нетолькож ссылка будет к примеру((
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Тест</title>
</head>
<body>
<table width="200" border="1" cellspacing="5" cellpadding="5">
<tr>
<th scope="col"><?php echo "Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст "; ?></th>
</tr>
<tr>
<td><?php sleep(3); echo "<a href='#'>Ссылка на файл</a>"; ?></td>
</tr>
<tr>
<td><?php echo "Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст "; ?></td>
</tr>
</table>
</body>
</html>
А на странице нетолькож ссылка будет к примеру((
Спустя 8 минут, 12 секунд (12.02.2012 - 18:48) nugle написал(а):
bposter
можно через js
http://javascript.ru/setTimeout
после истечения времени, просто добавляешь ссылку в нужный блок
можно через js
http://javascript.ru/setTimeout
после истечения времени, просто добавляешь ссылку в нужный блок
Спустя 2 минуты, 53 секунды (12.02.2012 - 18:51) XCross написал(а):
Цитата |
после истечения времени, просто добавляешь ссылку в нужный блок |
Это все просто обходится.
Спустя 9 минут, 16 секунд (12.02.2012 - 19:00) nugle написал(а):
XCross
ну найти то ее можно
ну найти то ее можно
Спустя 3 минуты, 45 секунд (12.02.2012 - 19:04) wplounge написал(а):
Цитата |
так sleep останавливает весь php код гдебы он небыл прописан((( |
Я ж поэтому и говорю, что в iframe ccылку выводить. Хотя, конечно, на JS было бы элегантнее.
Спустя 29 минут, 22 секунды (12.02.2012 - 19:33) bposter написал(а):
Вобщем я коечто придумал но это так сильно геморно получается конечно + базу данных нужно использовать, в базе создаю два поля одно id второе сама ссылка
Далее создаю кнопку скачать с скрытым полем и в скрытом поле указываю индефикатор(ID) нужной ссылки
Далее идет обработчик в котором sleep делает задержку ну а потом вытягивает нужную ссылку из базы
Но это както геморно как мне кажется ссылку надо в базу добавить потом в скрытое поле индефикатор вставить + на локалке sleep дольше чем на 30 сек не поставиш :unsure:
Далее создаю кнопку скачать с скрытым полем и в скрытом поле указываю индефикатор(ID) нужной ссылки
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Тест</title>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<script type="text/javascript" >
var req = Create();
function ge(id)
{
return document.getElementById(id);
}
function Create()
{
if(navigator.appName == "Microsoft Internet Explorer")
{
req = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
req = new XMLHttpRequest();
}
return req;
}
function Request(query)
{
req.open('post', 'cod.php' , true );
req.onreadystatechange = Refresh;
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
req.send(query);
}
function Refresh()
{
var a = req.readyState;
if( a == 4 )
{
var b = req.responseText;
document.getElementById('ajax').innerHTML = b;
}
else
{
document.getElementById('ajax').innerHTML = '<center>Ждите ссылка генерируется</center>';
}
}
/////Собераем все элементы формы которые будем отправлять
function Pusk()
{
var query;
var txt = encodeURIComponent(ge('cod').value);
query = 'cod='+txt;
Request(query);
}
</script>
<div id='ajax'></div>
<input id="cod" name="cod" type="hidden" value="2" />
<input type="submit" value="Скачать" onClick="Pusk()"/>
</body>
</html>
Далее идет обработчик в котором sleep делает задержку ну а потом вытягивает нужную ссылку из базы
<script type="text/javascript" src="jquery.js"></script>
<?php sleep (3);
$cod = isset($_POST['cod'])?$_POST['cod']:NULL;
$db = mysql_connect ("localhost","root","");
mysql_select_db ("url",$db);
mysql_query('SET NAMES UTF8');
$result_com = mysql_query("SELECT url FROM silka WHERE id='$cod'",$db);
$com = mysql_fetch_array($result_com);
echo $com['url'];
Но это както геморно как мне кажется ссылку надо в базу добавить потом в скрытое поле индефикатор вставить + на локалке sleep дольше чем на 30 сек не поставиш :unsure:
Спустя 8 минут, 28 секунд (12.02.2012 - 19:42) XCross написал(а):
Нафига sleep?
Временем лучше оперируй.
Какой-нибудь ишак вздумает в цикле дергать твою ссылку.
Временем лучше оперируй.
Какой-нибудь ишак вздумает в цикле дергать твою ссылку.
Спустя 5 секунд (12.02.2012 - 19:42) nugle написал(а):
XCross
на depositfiles реализовано через jquery
Можно при истечении времени генерировать ключ к ссылке, а потом сравнивать. Если ключ верный, то давать скачивать, а если нет, то не давать
на depositfiles реализовано через jquery
Можно при истечении времени генерировать ключ к ссылке, а потом сравнивать. Если ключ верный, то давать скачивать, а если нет, то не давать
Спустя 2 минуты, 31 секунда (12.02.2012 - 19:44) bposter написал(а):
Цитата (XCross @ 12.02.2012 - 16:42) |
Нафига sleep? Временем лучше пооперируй. |
Ну а как например?ато я просто тока учюсь, ну например берем текущее время по серверу а дальше че сним делать не приложу ума
Спустя 22 минуты, 47 секунд (12.02.2012 - 20:07) sergeiss написал(а):
Мне кажется, вот это самое лучшее решение, только с небольшой добавкой (и я не понял, почему в оригинале была "теплица" вместо "таблицы"? )
Цитата (XCross @ 12.02.2012 - 19:34) |
1. Пользователь пришел на страницу скачивания. Во время генерации этой страницы в таблицу заносишь текущее время. 2. Страница сгенерирована, таймер на 0, идет запрос к скрипту на получение файла. 3. В скрипте берешь это время, прибавляешь 60 секунд. Если текущее время меньше, чем получившееся время, то шлешь лесом, если нет - отдаешь файл, удаляешь запись из таблицы. |
Только еще надо АЯКС добавить. По истечение нужного времени (по отстчету в JS) уходит запрос на сервер. Он сравнивает время, дошли ли уже до разрешенного порога. Если нет, то запрос просто "тупо" игнорируется. Если да - то только тогда ссылка отдается браузеру.
Тогда до истечения времени ссылки в браузере просто не будет, никто её не сможет прочитать. А если отключен JS... То это уже проблемы юзера, нефиг дурью маяться
Спустя 9 минут, 28 секунд (12.02.2012 - 20:17) bposter написал(а):
Цитата (nugle @ 12.02.2012 - 16:42) |
XCross на depositfiles реализовано через jquery Можно при истечении времени генерировать ключ к ссылке, а потом сравнивать. Если ключ верный, то давать скачивать, а если нет, то не давать |
По поводу depositfiles у меня есть диск зверя с кучей софта так там есть браузер Опера АС так если этим браузером пользоваться то на depositfiles ссылки на скачку сразу появляются)
Спустя 1 минута, 25 секунд (12.02.2012 - 20:18) nugle написал(а):
bposter
settimeout + аякс и ноль проблем
settimeout + аякс и ноль проблем
Спустя 8 минут, 59 секунд (12.02.2012 - 20:27) XCross написал(а):
Цитата (sergeiss @ 12.02.2012 - 13:07) |
и я не понял, почему в оригинале была "теплица" вместо "таблицы"? |
_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)