2012-07-02 3 views
0

Я пытаюсь создать кнопку или ссылку, срок действия которой истечет через 1 час.PHP Count Down Expiry Button или Link

Я устанавливаю время, когда посетитель попадает на страницу с помощью печенья.

Большинство примеров кода, которые я видел, дают только время, прошедшее, а не оставшееся время.

пример: Ссылка истекает в 0 часов, 30, минут и 34 секунд

Это только некоторые грубый код:

//Setting cookie example 
setcookie('previous_time', time(), time()+3600*1); 


$current_time = time(); 
$previous_time = $_COOKIE['previous_time']; 

$time_diff = $current_time-$previous_time; 

Это где я застрял, я не знаю, как для преобразования отметки $time_diff в формат «истекает через 0 часов, 30, минут и 34 секунды»

Большое спасибо.

+0

какой ур формат timestamp? – sree

+1

Любой может очистить файлы cookie, так что это в основном бессмысленно. – nickb

+0

, тогда плохое использование сеансов ... в любом случае это не имеет значения, его истекает часть im, застрявшая на: b – john

ответ

0

Чтобы отформатировать разницу во времени, просто сделать некоторые математику, так как ваш $time_diff только количество секунд между двумя моментами:

$hours = floor($time_diff/3600); 
$minutes = floor(($time_diff/60) % 60); 
$seconds = $time_diff % 60; 

echo "$hours hours, $minutes minutes, $seconds seconds\n"; 

Таким образом, значение 20712would produce:

5 hours, 45 minutes, 12 seconds 
+0

это не работает для меня .. только минуты движутся, и они движутся вверх не вниз ... он должен быть обратным отсчетом – john

0

Используя формулу, сравнивающую временные метки, разница в секундах.

Итак, $ time_diff/60 получает минуты; разделить на 60 человек, чтобы получить часы; и т.д.

0

Я согласен с nickb, что печенье основой является тамперами-состояния, но говорите, вы отмечаете первый визит как-то на час вперед, когда ссылка истекает:

// set when we are counting down to 
setcookie('expires_at', time()+3600, time()+3600); 

// we are counting down not up (for "expires in" not "valid since" logic) 
$time_diff = $_COOKIE['expires_at'] - time(); 

$minutes = floor($time_diff/60); 
$seconds = floor($time_diff % 60); 

// zero hours since the link will only be valid for one hour max 
echo sprintf('expire in 0 hours, %d mins and %d seconds', $minutes, $seconds); 

Тогда вы можете сделать:

if($time_diff > 0){ 
    echo '<a href="...">...</a>'; 
} 
+0

Я получаю «истекает через 0 часов, -22354237 минут и -9 секунд» – john

+0

же здесь, массив файлов cookie установлен на загрузке следующей страницы, я думаю, поэтому вам может потребоваться значение по умолчанию time_diff для 1 для первый раз около –

+0

спасибо за tryin плохой должны продолжать искать :( – john