![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 4.05.2019 Skąd: PHP5.6 Ostrzeżenie: (0%) ![]() ![]() |
jQuery jest trudniejsze i bardziej skomplikowane niż się wydawało, a wydawało się naprawdę trudne... (IMG:style_emoticons/default/ohno-smiley.gif)
Pomijam fakt, że w sieci brak zgrabnego gotowca (jQuery, AJAX, PHP5.6) najprostszego systemu głosowania +/- 1 dla np. komentarza. (albo nie umiem szukać) Na podstawie kilkunastu różnych kodów z Internetu zlepiłem jeden funkcjonalny skrypt, który (po kliknięciu) ma za zadanie: 1. przyznać ocenę +1 (tj. zwiększyć zawczasu, sztucznie licznik aktualnej oceny +1) a) wysłać ID_komentarza z rodzajem_oceny(+/-) do PHP i tam po weryfikacji zrobić Update SQL (po stronie PHP brak problemów) 2. sformatować kolorystycznie kliknięty button "plus" oraz usunąć możliwość kliknięcia w button "minus" za pomocą display:none; 3. wrzucić ocenionego komentarza (tj. ID_komentarza) do localStorage, żeby user wiedział co już ocenił. 4. sprawdzić ID_komentarza z localStorage i jeśli istnieje, to sformatować kolorystycznie na stałe. (tj. do czasu usunięcia pamięci lokalnej www) Generalnie wszystko działa dla jednego komentarza. Siedziałem nad tym dwa dni i jestem pewny, że można to zrobić znacznie lepiej, ale składnia i jej logika mnie dobija więc będę wdzięczny za naprowadzenie w jaki sposób edytować kod, aby wrzucić w jakąś (IMG:style_emoticons/default/brzydal.gif) pętle, która automatycznie pobiera i sprawdza (tj. formatuje jeśli oceniono) wszystkie wyświetlone komentarze (tj. ID_komentarza).
|
|
|
![]() |
![]() ![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 4.05.2019 Skąd: PHP5.6 Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
Taaaak (IMG:style_emoticons/default/specool.gif) dotarłem do tego z godzine po opublikowaniu posta:
Potencjalne problemy z DDoS'em przy głosowaniu/pisaniu planuje rozwiązać wprowadzając twardy i miękki limit w taki sposób, że stworze osobną tabele z id_user, id_kom, timestamp Miękki limit: to możliwość oddania 20 głosów na każdą godzinę bez problemów, a każdy kolejny głos >20 będzie można oddać 1x/min. Twardy limit: to max. 60 głosów na godzine. Później w ramach rozwoju dorzucę jeszcze sprawdzanie jaki user często osiąga limity żeby sprawdzić != BOT. Twoje rozwiązanie jest jak Graal, którego szukałem przed napisaniem tematu. Konkretne i dość zrozumiałe dla amatora jQuery. Świetny przykład do nauki na start, który rozwiązuje w lepszy sposób aktualne zadanie, dziękówa! (IMG:style_emoticons/default/thumbsupsmileyanim.gif) Dopisano 10.05.22 & 18:20: Nie wydaje mi się aby był sens tworzenia nowego tematu, skoro kolejne dwa pytania dotyczą tematu. Więc pozwolę sobie dopytać tu (najwyżej @nospor mnie rozstrzela^^). 1. Czy powinienem obawiać się wstrzyknięcia kodu z localStorage do jQuery, który odbiera i później powierzchownie przetwarza zawartość?
Czytałem że niby obróbka json'em jest bezpieczna, ale nie siedzę w JS i nie wiem czy nie trzeba dla pewności czymś dodatkowym tego przefiltrować. Obstawiam że nie trzeba i kilka prób potwierdziło to przekonanie, ale wole zadać głupie pytanie niż później żałować. 2. Rozterka wydajnościowa, przykładowo User klika "plus" i PHP za pomocą Ajax'a robi UPDATE - jeżeli jest zalogowanych 1000 Userów i każdy z nich zacznie updatować baze kilkanaście razy z rzędu, to raczej racjonalnym wydaje się być założenie przymulenia hostingu, mam rację? Czy można ten problem jakoś obejść? istnieją jakieś sposoby? przeszło mi przez myśl by "wysłane głosy" odczytywać z localStorage 1x/10min i robić zbiorowy update, ale to raczej nie rozwiąże problemu. Ostatnio gdzieś czytałem o mechanizmie składowania memory w mysql - może lepiej jest robić tego typu update w tabeli memory, a następnie 1x/24h z tabeli memory do zwykłej(właściwej) tabeli, gdy ma się do dyspozycji 1Ghz + 2GB RAM? doświadczone osoby z pewnością znają odpowiedź, a ja chętnie skorzystam z możliwie jak najwydajniejszego sposobu kosztem wyświetlania aktualnych danych dla usera z opóźnieniem. Tutaj jeszcze rozważam wykupienie kolejnego hostingu i korzystania z dwóch osobnych baz danych na jednym hostingu, gdzie jedna(zewnętrzna) baza będzie odpowiadać za aktualne update i wyświetlanie "ocen" w trybie natychmiastowym, a druga baza odpowiadałaby za inne działania - czy przyniesie to znacznie lepszy rezultat jak się wydaje i czy taka hybryda ma racje bytu? Ten post edytował phpuser88 10.05.2022, 17:20:06 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 17:29 |