![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Chcę stworzyć sobie system CMS, taki który za jakiś czas będę mógł bez problemu rozbudować, i teraz moje pytanie, czy taki podział klas jest dobry rozwiązaniem.
Klasa user.class.php - dodawanie użytkownika - kasowanie użytkownika - edycja użytkownika - banowanie użytkownika - podgląd profilu użytkownika - przypomnienie hasła Klasa article.class.php - dodawanie artykułu - kasowanie artykułu - edycja artykułu - podgląd artykułu - wylistowanie artykułów Klasa category.class.php - dodawanie kategorii - usuwanie kategorii - edycja kategorii - podgląd wszystkich kategorii Klasa news.class.php - dodawanie newsa - kasowanie newsa - edycja newsa - podgląd newsa - wylistowanie newsów Klasa plugin.class.php - dodanie pluginu - aktywacja/dezaktywacja pluginu - edycja pluginu Klasa db.class.php W tej klasie będzie wszystko związane, z bazą danych np łącznie z bazą Klasa validation.class.php Będzie to klasa odpowiedzialna za walidacja wprowadzonych danych Klasa filter.class.php Zastosowanie tej klasy, to filtrowanie wszelkich danych wprowadzanych przez użytkowników Za wszelkie pomysły, opinie i sugestie z góry dziękuję. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
Cytat Klasa plugin.class.php - dodanie pluginu - aktywacja/dezaktywacja pluginu - edycja pluginu Opiszesz dokładniej co masz na myśli, jak by miało to dokładniej działać ? Co do reszty to jest chyba ok ![]() Z tym że każda klasa powinna być w stanie zwrócić tak jeden jak i wiele rekordów. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Wgrywasz plugin do folderu plugins, logujesz się do systemu, przechodzisz do zakładki Pluginy, i tam będzie pokazany wgrany plugin, po kliknięciu na niego zostanie on zainstalowany, po instalacji będzie można go aktywować lub odinstalować, w wypadku gdy będzie aktywny, będzie można go usunąć lub wyłączyć. Coś na zasadzie, jak ma wordpress z pluginami
![]() Edycja pluginu, to na tej zasadzie, że wczytuje kod źródłowy pluginu, do pole tekstowego, gdzie będzie można go dostosować do własnych potrzeb, dokładnie edytować jego kod. Choć ten CMS będzie rozwiązaniem dedykowanym, gdzie wszystkie pluginy będą pod klienta, więc możliwość edycji, raczej jest nie potrzebna. O tym, że każda klasa powinna móc zwrócić jeden lub kilka rekordów to wiem ![]() Ten post edytował ExPlOiT 3.10.2010, 17:31:50 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Takie czynności jak dodanie użytkownika są zbyt skomplikowane dla jednego obiektu, a Ty chcesz po pięć takich wrzucać do jednego. Podstawowa zasada OOP: jeden obiekt, jedno zadanie.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
Crozin - to zależy co masz na myśli mówiąc 'dodanie użytkownika' Jeśli chodzi o wsadzenie walidacji pól z formularza + sprawdzenie czy nick jest wolny + insert do bazy to wiadomo jedna metoda w klasie user zajmować się tym nie powinna i można by zrobić jakiś model_registration.
Ale jeśli ExPlOiTowi zależy jedynie na segregacji zapytań na bazie czyli klasa user to zbiór zapytań typu select, insert, update, delete dla tabeli / tabel user to wszystko jest ok. Chyba nie będziesz robić osobnej klasy typu
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ale jeśli ExPlOiTowi zależy jedynie na segregacji zapytań na bazie czyli klasa user to zbiór zapytań typu select, insert, update, delete dla tabeli / tabel user to wszystko jest ok Dokładnie to mi chodzi, tak aby nie mieć w przyszłości problemów z rozbudową systemu. Dokładnie coś tego typu:
Zastanawia mnie jedno, jak jest dokładnie stworzone zarządzanie użytkownikiem, czy jest to jedna klasa, która wszystko robi, dodaje, kasuje itp, czy dla np dodania i kasowania, tworzone są osobne klasy? Bo szczerze mówiąc, im więcej o OOP czytam, tym bardziej się gubię. Ten post edytował ExPlOiT 3.10.2010, 20:12:08 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 175 Pomógł: 12 Dołączył: 28.06.2007 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Podziel tą logikę na dodatkowe warstwy: np User (pola name, mail itp), oraz UserDao (metody findBy, Save itp) której to np przekazujesz obiekt User do utrwalania w db.
-------------------- Wyobraźnia bez wiedzy może stworzyć rzeczy piękne.
Wiedza bez wyobraźni najwyżej doskonałe. Albert Einstein |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
Nie dawaj echo i zmian lokacji w klasach do tego nie przeznaczonych
![]() Po co to + brak ochrony przed sql injection + po co filtr na hasło ? Hasło daj w md5 z solą czy coś. +filtrowanie przed xss dawaj przy wyświetlaniu + if(!$result===false) Ten ! powinien tam być? ![]()
Powód edycji: [Spawnm]:
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za opinie i sugestie, a co do !, jakoś tak mi się tam wkradł
![]() |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 9.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli to ma być CMS to nie radzę zaszywać artykułów czy kategorii na stałe w nim. Popracuj nad modułową budową tego.
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Powiedzcie mi, czy to jest dobrze napisana klasa:
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
Nie.
Po co pchasz wszystko do $this ? Nadal nie filtrujesz danych przed sql injection. Ta klasa nie powinna filtrować danych przed xss + filtrujemy przy wyświetlaniu a nie zapisywaniu . |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 13 Dołączył: 15.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
spawnowi chodzi chyba o addslashes, a htmlspecialchars dajesz tylko przy wyciąganiu danych z bazy, bo po co zaśmiecać bazę danych.
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
O prepared statements słyszał? Nie? To niech pogooglea.
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Poprawiłem kod:
Crozin słyszałem, o tym ![]() @down Poprawione ![]() Ten post edytował ExPlOiT 7.10.2010, 21:56:11 |
|
|
![]()
Post
#16
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nie addslashes a mysql_escape_string a najlepiej mysql_real_escape_string a już najlepiej prepared statement
![]()
Powód edycji: [nospor]:
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#17
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
Po co escapujesz skoro bindujesz?
+ po co w nazwach metod dajesz Article? O tym że add() dotyczy article informuje już nazwa klasy. $data != $date + nic z tym nie robisz ![]() //edit hmm widzę że poszła edycja postu ...
Powód edycji: [Spawnm]:
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Tak, międzyczasie poprawiłem kod
![]() ![]() |
|
|
![]()
Post
#19
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
No to dalej - czemu nazwy raz zaczynasz z dużej a raz z małej litery?
Zdecyduj się (na małe z kamelem) inaczej z czasem zacznie ci to przeszkadzać ![]() + czemu dajesz db->close() w dodawaniu czy edycji? Wydziel a raczej wywal bo articles się tym zajmować nie powinno. |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Ok, poprawiłem wszystko
![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 05:32 |