Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Konto "premium", problem zakończeniu
Mlody993
post
Post #1





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 12.02.2009

Ostrzeżenie: (0%)
-----


Witam,
próbuję zrobić coś w formie konta "premium". Chcę dawać użytkownikom udzielającym się opcję wyłączenia reklam na stronie.

Mam skrypt sprawdzający datę aktywacji, ilość dni no i on dezaktywuje bądź nie reklamy. Wszystko działa w porządku, kiedy mamy aktywne konto "premium", kiedy się skończy też jest ok, bo reklamy się pokazują. Problem jest natomiast po upływie np. 30 dni po zakończeniu konta premium. Mianowicie reklamy znów się wyłączają, pojawia się komunikat o koncie premium mimo tego, że daty są stare:
Data płatności: 10.04.2016
Reklamy wyłączone do: 10.05.2016


Mój kod wygląda tak:
  1. <?php
  2. $uzytkownik = $_SESSION['id'];
  3. function sprawdz_premium($uzytkownik) {
  4. $us = $_SESSION['id'];
  5. $dane = mysql_fetch_array(mysql_query('SELECT * FROM `premium` WHERE `user` = "'.$us.'"'));
  6. $zakup = $dane['data_zakupu'];
  7. $okres = $dane['okres'];
  8. $wynik = date( 'd.m.Y', strtotime($zakup .' +'.$okres.' day' ));
  9.  
  10. $czas = time();
  11. $teraz = date('d.m.Y', $czas);
  12. if($teraz <= $wynik) {
  13.  
  14. $dostep = true;
  15. } else {
  16.  
  17.  
  18. $dostep = false;
  19. }
  20. return $dostep;
  21.  
  22. }
  23. ?>


Spróbowałem też dodać linijkę, aby po skończeniu premium usuwało dane z bazy danych.
  1. if ($teraz > $wynik) {
  2. mysql_query("DELETE FROM premium WHERE user=".$_SESSION["id"]."");
  3. }


Problem natomiast wtedy jest taki, że jeśli użytkownik z wyłączonymi reklamami zaloguje się ponownie dopiero np. po miesiącu od daty zakończenia, to nadal będzie miał wyłączone reklamy. ;/
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Mlody993
post
Post #2





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 12.02.2009

Ostrzeżenie: (0%)
-----


Nadal niewiele mi to pomogło. Twój sposób porównuje tylko aktualny czas z czasem zakupu nie biorąc pod uwagę, że możemy mieć jeszcze aktywne np. 10 dni.


@edit:
Dobra, udało się. ;-) Trochę pomyślałem i działa.

  1. $wynik = date( 'd.m.Y', strtotime($zakup .' +'.$okres.' day' ));
  2. $wazne = strtotime($wynik);
  3. $czas = time();
  4.  
  5. if($czas <= $wazne) {
  6.  
  7. $dostep = true;
  8. }


Wystarczyło przerobić na strtotime. ;-) Dziękuje koledze wyżej za pomoc.

Ten post edytował Mlody993 6.07.2016, 05:53:44
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 30.12.2025 - 17:00