←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

GmAMXBans
[ROZWIĄZANE] Skrypt zwiększający ważność a...

Zablokowany

  • +
  • -
panczo12d - zdjęcie panczo12d 08.08.2012

Witam. Pisze skrypt zwiększający ważnośc admina w GmAMXBansie. Mam pytanie. Co zwiększyć w bazie aby działało? Pole `expired` czy `days`. A może to i to? Jak to zrobić?

Pozdrawiam.
Odpowiedz

  • +
  • -
Kawon - zdjęcie Kawon 08.08.2012

Na czym będzie polegać ten skrypt ?
Przecież edytując admina możesz rozszerzyć jego długość
Odpowiedz

  • +
  • -
panczo12d - zdjęcie panczo12d 08.08.2012

Tak, wiem. Ale niedługo szkoła która jest ważniejsza od komputera. Nie będę miał zbyt dużo czasu na zbieranie składek od adminów i ręczne dodawanie im kilku dni aktywności. Napisałem już sobie cały skrypt automat z zintegrowaną płatnością SMS proserwer (cURL) i została mi jeszcze kwestia wydłużania czasu aktywności admina.
Nie mam pojęcia czy zwiększyć samo pole `days`, czy też trzeba zmienić pole `expired` które odpowiada za ważnośc admina w sensie dzien-miesiac-rok godzina-minuta-sekunda.
Odpowiedz

Flk - zdjęcie Flk 08.08.2012

ale mu pewnie chodzi o jakiś sklep coś w tym stylu
Odpowiedz

  • +
  • -
panczo12d - zdjęcie panczo12d 08.08.2012

tak, to jest taki skrypt pisany od 0.
screen: http://img20.imagesh...8/screenyxk.png
po lewej przed zalogowaniem, po prawej po zalogowaniu.

Po wyslaniu sms i wpisaniu wszystkich danych skrypt sprawdza poprawność (automatycznie) i jeżeli jest wszystko ok, należy zwiększyć ważność admina.
Odpowiedz

  • +
  • -
Kawon - zdjęcie Kawon 08.08.2012

użyj expired oraz days z tym że w kolumnie days wpisywana jest ilość dni normalnie np. 1 dzień to w kolumnie jest wartość 1
natomiast w kolumnie expired jest mnożenie days * 86400 (czyli zamiana na sekundy) jeżeli na zawsze to w obu przypadkach wartość wyniesie 0
Odpowiedz

  • +
  • -
panczo12d - zdjęcie panczo12d 08.08.2012

ok, dzięki za pomoc. w skrypcie bd zmienial i pole days iexpired. z tym że mylisz się odnośnie pola expired. to nie jest żadne mnożenie days przez xxx.

wyjaśnię Ci.

Pole expired jest to data do kiedy admin jest ważny w formacie timestamp.
Przykład:

data w timestamp: (php) [na teraz aktualna]

$godzina = 19;
$minuta = 29;
$sekunda = 0;
$miesiac = 8;
$dzien = 8;
$rok = 2012;
$ts = mktime($godzina, $minuta, $sekunda, $miesiac, $dzien, $rok);
echo $ts;

powyższy skrypt wyświetli datę w formacie timestamp.

amxbans robi to tak, że bierze aktualną datę, do tego dodaje te days powiedzmy + 5 dni, tworzy timestamp i zapisuje do bazy danych.


musze jeszcze poogarniać jak się dodaje timestampy i kilka rzeczy, muślę że mi się uda.

Pozdrawiam.

cytat "podstawowym sposobem zapisu daty w systemie unix jest tzw. timestamp. jest to ilosc sekund jaka upłuneła od 1.1.1970."
Użytkownik panczo12d edytował ten post 08.08.2012 18:49
Odpowiedz

  • +
  • -
Kawon - zdjęcie Kawon 08.08.2012

Źle się zrozumieliśmy ponieważ nie wspomniałem o UNIX_TIMESTAMP()
zmienna days jest mnożona przez 86400 (1 dzień na sekundy) liczby które zostaną wygenerowane są zapisywane do bazy, kolumna expired
następnie na stronie jest wyświetlana kompletna data ;)
Odpowiedz

  • +
  • -
panczo12d - zdjęcie panczo12d 08.08.2012

ok.musze zmienic pole days i expired. tylko nie rozumiem jaka wartosc wpisac w expired.

wytlumacz mi na przykladzie.

admina utworzylem 01.01.2012 12.00.00
dalem mu aktywny przez 6 dni
wiec bedzie aktywny do 07.01.2012 12.00.00
w poly days jest liczba 6 a w expired jakas, nie wiem jaka.

teraz przez moj skrypt zmieniam days z 6 na 10 i jak mam zmienic pole exoired?

moze pole created+days*86400
Użytkownik panczo12d edytował ten post 08.08.2012 20:11
Odpowiedz

  • +
  • -
Kawon - zdjęcie Kawon 08.08.2012

tak jak już pisałem z kolumny expired jest wyświetlana ważność admina (pełna data do kiedy) (zerknij na screen)
Spoiler

'admin aktywny przez:' w tym polu jest pobierana kolumna days
'ważny przez:' data 7.08.... jest to kolumna epired
natomiast 'rozszerzony o' jest to dodanie do created wartości jaka zostanie dodana i pomnożona przez 86400



przy dodawaniu admina kolumna created ma automatycznie aktualną datę poprzez funkcję UNIX_TIMESTAMP().
wartość dodawania do kolumny expired
$days=(int)$_POST["days"];
$exp="(UNIX_TIMESTAMP()+(".($days * 86400).")),";
zmienna days ma wartość dni np. 30
w zmiennej exp zostaje to pomnożone oraz dodane do UNIX_TIMESTAMP

Przy rozszerzaniu kod zmiennej exp się zmienia
$exp="(`created`+(".($days * 86400)."))";
teraz do daty utworzenia admina (wygenerowane przez UNIX_TIMESTAMP) zostaje dodany wynik mnożenia dni dodania z 86400
Kawon (08.08.2012 21:18):
Nie potrafię ci tego za bardzo wytłumaczyć. Przeczytałem to co ci napisałem i sam tego nie mogę zrozumieć xD napisz do mnie na PW najlepiej ;)
Odpowiedz

  • +
  • -
panczo12d - zdjęcie panczo12d 10.08.2012

Ja jednak rozumiem to. Dziękuję za pomoc. Skrypt udało mi się dokończyć i działa jak marzenie :) Można zamknąć, ale jeszcze musze Cię poprawić :D

natomiast 'rozszerzony o' jest to dodanie do created wartości jaka zostanie dodana i pomnożona przez 86400

- jest to zmodyfikowanie pól `days` i `expired`. Do `days` jest dodawana liczba którą tam wpiszemy a pole `expired` jest modyfikowane w następujący sposób

$nowy_expired = $stary_expired + $dni_w_formularzu_na_stronie * 86400


wartość dodawania do kolumny expired
$days=(int)$_POST["days"];
$exp="(UNIX_TIMESTAMP()+(".($days * 86400).")),";


- nie unix_timestamp() tylko pole created :)

zmienna days ma wartość dni np. 30
w zmiennej exp zostaje to pomnożone oraz dodane do UNIX_TIMESTAMP


- oraz dodanie wartości pola created ;)

No ale najważniejsze że nakierowałeś mnie na trop i udało mi się osiągnąć cel :) Jeszcze raz dzięki :D

Pozdrawiam.
Użytkownik panczo12d edytował ten post 10.08.2012 08:36
Odpowiedz

  • +
  • -
Kawon - zdjęcie Kawon 10.08.2012

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany