Użytkownik może kupić pakiet i ma 30 dni w tym pakiecie do wykorzystania. Powiedzmy że dziś aktywuje pakiet i w dniu aktywacji odliczamy mu 1 dzień. I widzi sobie że pozostało 29 dni. Pakiet w danym dniu można włączyć lub wyłączyć ale to nie zmienia faktu że już i tak ma 29 dni. Jeżeli wyłączył pakiet i za tydzień go włączy to znowu odejmiemy mu 1 dzień bo system sprawdzi datę ostatniej aktywacji pakietu jeśli była wcześniejsza niż dziś to aktualizuje datę i odejmuje dzień.
Ale druga opcja jest taka, że użytkownik może nie wyłączyć pakietu przez 8 dni. I teraz jak sprawdzać czy kolejnego dnia ma aktywny pakiet ? Teoretycznie jeśli zapuścimy Crona o godzinie 11 w nocy by sprawdził czy pakiet jest aktywny to powinno załatwić sprawę. Ale nie wiem na 100% czy dobrze będzie to zastosować.
Sytuacja z oszustwem.
- Użytkownik włącza pakiet i w tym momencie odejmujemy mu 1 dzień. Ok jest godzina 11 system sprawdza datę aktywacji pakietu: była dziś wiec o 11 nie zdejmujemy mu dnia z pakietu.
- Dzień kolejny użytkownik wie że o 23 system sprawdza włączony pakiet więc o 22:50 wyłącza pakiet by o godzinie 1 w nocy go włączyć. Dzięki temu drugiego dnia działającego pakietu system nie zabrał mu dnia w którym pakiet obowiązywał a aktywacja dnia 3 zdjęła z pakietu dopiero 2 dni, a nie 3. Czyli mając pakiet na 30 dni można zrobić z tego 60 dni.
Jak to wykonać by było prawidłowo ?