За последние 24 часа нас посетили 40749 программистов и 1748 роботов. Сейчас ищут 790 программистов ...

Счетчик времени

Тема в разделе "PHP для новичков", создана пользователем gix, 2 фев 2015.

  1. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    Приветствую. Подскажите как реализовать такую штуку-делаю срок действия ссылки для активации учетной записи на сайте. Часть ссылки записывается в переменную сессии. И надо чтобы эта переменная была действительна 30 минут от даты ее записи и потом unset. Возможно ли это реализовать на чистом php без субд? Мозговал над функциями time,date, strtotime но как то бестолку.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    да можно, перед использованием ссылки, проверь время и если прошло больше, выводи об этом сообщение
     
  3. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    ну я так и хотел НО как зафиксировать время(без записи в бд), когда была записана переменная сессии, чтобы потом сравнить с текущим временем?

    Добавлено спустя 2 минуты 35 секунд:
    хотя можно и время в сессию записать. как вариант
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Можно зашифровать или используя хэш, и обойтись без сессии
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    В ссылку записать timestamp
     
  6. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    всем спасибо
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Вот играйся

    Код (PHP):
    1. <?php
    2.  
    3. $salt = 'qwertyuiopasdfghjklzxcvbnm1234567890';
    4. $time = strtotime('now + 30 mins');
    5. $hash = md5($time.$salt);
    6.  
    7. // формируем ссылку для проверки
    8. if(isset($_POST['generate']) && $_POST['generate'] == 'link')
    9. {
    10.     header('Location: ?hash='.md5($time.$salt).'&time='.$time);
    11.     exit();
    12. }
    13. ?>
    14. <!DOCTYPE HTML>
    15. <html>
    16. <head>
    17.   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    18.   <title>sandbox php.ru</title>
    19. </head>
    20. <body>
    21.  
    22. <form name="test" method="post" action="?">
    23. <input type="hidden" name="generate" value="link">
    24. <input type="submit" value="generate">
    25. </form>
    26.  
    27. <hr>
    28.  
    29. <?php
    30.  
    31. // если хаши совпадают, всё нормально
    32. if(isset($_GET['hash']) && isset($_GET['time']) && $_GET['hash'] == md5($_GET['time'].$salt))
    33. {
    34.     echo 'yes';
    35. }
    36.  
    37. if (isset($_GET['hash']) && isset($_GET['time']))
    38. {
    39.     echo '<hr>'.$_GET['hash'].'<br>'.md5($_GET['time'].$salt);
    40. }
    41.  
    42. ?>
    43.  
    44. </body>
    45. </html>
     
  8. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    спасибо!