• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Abonament, jak go oznaczyć, sprawdzać i zabezpieczyć?

Object Storage Arubacloud
0 głosów
368 wizyt
pytanie zadane 17 maja 2016 w SQL, bazy danych przez kaminiak23 Użytkownik (640 p.)
Jak prawidłowo pilnuje się abonamentów? Jak powinienem zapisać to w bazie aby było to zgodne ze standardami i tam jak się to robi?
Dla przykładu:
- user po rejestracji dostaje gratisowy abonament na 24h,

czy mogę zrobić to np. tak?:
- przy rejestracji usera dodaje do tabeli z abonamentami takie dane:
1 - id
2 - id_usera
3 - status
4 - start
5 - koniec

Jak user się zaloguje to sprawdzam STATUS (0/1) czy ma abonament czy nie. Gdy się ten abonament kończy zmieniam statur na 0. Sprawdzanie chyba z crona co 2 min.
Jeśli "kupi" dodatkowy abonament to sprawdzam czy ma aktywny i jeśli tak to zmieniam datę o odp ilość sekund.

Może tak być czy inaczej to powinienem robić?
Przydałoby się jeszcze jakieś zabezpieczenie gdyby cron nie zadziałał czy coś czego nie przewiduję teraz jeszcze ale nie bardzo mam na to pomysł. Może można zrobić to inaczej, że bez crona tylko sprawdza przy każdym logowaniu ...

2 odpowiedzi

+1 głos
odpowiedź 17 maja 2016 przez Ivan Maniak (60,650 p.)
wybrane 17 maja 2016 przez kaminiak23
 
Najlepsza
Ja zrobiłbym to tak:
Dwie osobne tabele - użytkownicy[id, email, haslo itd.] oraz druga abonamenty[id_abonamentu, id_uzytkownika, start, koniec]
I przy każdej czynności, która wymaga wykupionego abonamentu sprawdzałbym czy w tabeli "abonamenty" istnieje kolumna z id_uzytkownika [Jeżeli istnieje więcej, to wybieram najnowszą np. w taki sposób "... ORDER BY koniec DESC LIMIT 1" Według kolumny koniec, bo w niej będzie przechowywany czas w s(UNIX) i nawet gdy użytkownik wykupi 2 abonamenty pierwsze na tydzień, a następnie na dzień(gdy na tydzień będzie jeszcze trwał), to zawsze wybierze ten, który działa i tym samym zapobiegniesz "zniknięcia" abonamentu]
I w taki sposób nie korzystasz z CRONA i oszczędzasz to z czego CRON korzysta [Nie jestem pewien ale na pewno z jakiś tam zasobów korzysta :)]
komentarz 17 maja 2016 przez kaminiak23 Użytkownik (640 p.)
Ok dzięki, to dobre rozwiązanie, tylko chyba nie rozumiem jak tu abonament przestanie działać - co go wyłączy jeśli nie cron? Jeśli abonament pozwala na "granie" to ok, sprawdze to przy logowaniu ale jeśli abonament pozwala na np. .. hmmm - no np na wyświetlanie obrazów przez 2 dni to jak on sie nie zaloguje to co innego jak cron to wyłączy?

wiem, że data spadnie do zera ale co tę datę sprawdzi i zmieni abonament na "brak"?
1
komentarz 17 maja 2016 przez CzikaCarry Szeryf (75,340 p.)

no to przyjmijmy, że będziesz dawał datę końca abonamentu. A co do np wyświetlania obrazków do tajesz w środku kodu html kod php i tam dajesz

data= time();
//tutaj przetwarzasz date na sekundy unixowe
if(data<sekundy_z_bazy)
{
echo <<<END
<img src="#"></br>
Masz abonamenty, ciesz się oglądaniem obrazka
END;
}
else
{
echo "Ni ma abonamentu, nie ma obrazka";
}

 

komentarz 17 maja 2016 przez Ivan Maniak (60,650 p.)
Dokładnie, za każdym razem gdy coś użytkownik ma związanego z abonamentem po prostu sprawdzasz tą tabele i porównujesz kolumnę "koniec" z datą [time()] Jeżeli data jest większa oznacza, że abonamentu nie ma, jeżeli jest mniejsza - istnieje. A kolumna start służy np. do sprawdzenia kiedy został ów abonament kupiony. I np. odejmując koniec - start, możesz sprawdzić na ile został abonament wykupiony. I wtedy np. możesz wyświetlić listę zakupionych abonamentów przez danego użytkownika.
komentarz 17 maja 2016 przez kaminiak23 Użytkownik (640 p.)
Takie proste ^^ :), dziękuję.
komentarz 17 maja 2016 przez CzikaCarry Szeryf (75,340 p.)
Ucz się ucz, bo nauka to potęgi klucz. Będziesz miał dużo kluczy - zostaniesz woźnym. Pozdrawiam :)
komentarz 17 maja 2016 przez efiku Szeryf (75,160 p.)
Lepiej użyć Twiga niż pchać do kodu PHP HTML.. i czasami też klasy DateTime ;)
+2 głosów
odpowiedź 17 maja 2016 przez CzikaCarry Szeryf (75,340 p.)
Możesz dać w tej tabeli zamiast start i stop po prostu datę zarejestrowania i sprawdzasz przy zalogowaniu czy minęły 24h czy nie.
komentarz 17 maja 2016 przez kaminiak23 Użytkownik (640 p.)
to zadziała na początkowy abonament ale jak ktoś dokupi kolejny to już trzeba to edytować data rejestracji jest potrzebna więc i tak trzeba dać dodatkową tabelę z datą startu abonamentu

Podobne pytania

0 głosów
1 odpowiedź 472 wizyt
pytanie zadane 3 czerwca 2021 w Urządzenia mobilne przez Krzysiek_34 Mądrala (6,050 p.)

92,555 zapytań

141,401 odpowiedzi

319,537 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...