![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam!<br>Kiedyś stworzyłem klasę logowania. Zaczynam dopiero przygodę z OOP. Proszę o Waszą opinie i jakieś rady. Moja klasa:
http://wklej.org/id/101767/
Powód edycji: [erix] przeniosłem
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Pytanie jaki zwiazek ma uruchamianie sesji oraz laczenie sie z baza danych z samym logowaniem ? Te funkcjonalnosci zupelnie do tej klasy nie pasuja. Pomysl - co tak naprawde powinna zawierac klasa do logowania - tak naprawde TYLKO to co jest zwiazane z logowanie uzytkownika
![]() -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Tak, masz rację. A pozatym to co jeszcze myślicie o tej klasie? Zależy mi, żeby się od was dowiedzieć istotnych rzeczy dotyczących tworzenia systemu kontoroli autoryzacji. Może ktoś mi dokładnie powie, jak to powinno wyglądać bo już któryś dzień przeglądam www i ciężko jest znaleść coś sensownego i OO.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
http://phpgacl.sourceforge.net/ - polecam zapoznanie sie
![]() -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
To cały system, który nie jest mi zbyt potrzebny. Ponadto chcę się nauczyć.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
http://wklej.org/id/101896/txt ja kiedys dla cwiczen tak to napisalem jednak teraz bym zmienil 2 rzeczy ale ogolnie klasa jest good jak chcesz to zobacz
![]() Oczywiscie dla rejestracji i bazy danych mam osobne klasy. -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
No ciekawie to wygląda.
Ja w między czasie zacząłem tworzyć coś nowego. Proszę o uwagi i pewnie wielu powie, że powninienem odseparować połączenie z bazą. Niestety nie bardzo wiem jak to zrobić, ponieważ przeważnie mam z implementacją jednej klasy w drugiej. Jeśli by komuś się chciało to byłbym bardzo wdzięczny gdyby mi pokazał jak to napisać. Oto kod: http://wklej.org/id/101976/ |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Po pierwsze funckja zarejestruj powinna byc w innej klasie to raz.
Dwa to co masz w costruct daj do klasy o nazwie Db czyli taki maly zarys jak to powinno wygladac:
A rejestracja ma byc w osobnym pliku. Tak mniej wiecej oczywiscie. Aha o potem oczywiscie robisz tak:
Ten post edytował marcio 6.06.2009, 21:48:10 -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Kod public function __construct(DB $db) { unset($this ->db); } 1.A dlaczego to jest tak? Dlaczego są dwa konstruktor? 2.Jeśli tworzę klasę rejstracja to poza samą rejstracją chcę w niej umieścić metody odzyskajHaslo(). Jakie jeszcze powinienem w niej umieścić metody? Ten post edytował gcdreak 7.06.2009, 07:47:44 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Kod public function __construct(DB $db) { unset($this ->db); } 1.A dlaczego to jest tak? Dlaczego są dwa konstruktor? 2.Jeśli tworzę klasę rejstracja to poza samą rejstracją chcę w niej umieścić metody odzyskajHaslo(). Jakie jeszcze powinienem w niej umieścić metody? Sorki literowka mial byc __destruct() ![]() Nom ogolnie co robia zawsze klasy rejestracji dodaja user'a i ewentualnie odzsykuja jego stare haslo potem jak to sobie juz zaimplementujesz to juz twoja sprawa czy bedziesz uzywal gettery/settery czu pola publiczne lub arg. funckji by ustawiac dane. Zrob pokaz a my ci powiemy co i jak. -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 662 Pomógł: 45 Dołączył: 26.03.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 869 Pomógł: 53 Dołączył: 20.10.2003 Skąd: Przeworsk Ostrzeżenie: (0%) ![]() ![]() |
Ale bajerujesz z komentarzami.
![]() Używaj angielskim nazw funkcji, zmiennych itp. Może spodobają ci się skrócone warunki? Nie lepiej włączyć sesje w konstruktorze? Polecam error_reporting(E_ALL). -------------------- |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
@Moli
co Ci w tym nie pasuje? Używaj angielskim nazw funkcji, zmiennych itp. Postanowiłem ten projekt zrealizować używając polskich nazw. Wszyscy używają angielskich i nie mówię, że to jest złe bo ang. to język programowania i dla wszystkich czytelne jest. Należy jednak zauważyć, że tego kodu będę używał tylko ja, a jeśli ktoś inny by chciał poużywać to i tak będzie to Polak.Może spodobają ci się skrócone warunki? Możesz mi to dokładniej wytłumaczyć? Dać przykład?Nie lepiej włączyć sesje w konstruktorze? Do sesji zrobię osobną klasę i pewnie zamieszcze ją, aby sie od Was dowiedzieć co można by zrobić lepiej. Może nawet dzisiaj ją wrzucę.Polecam error_reporting(E_ALL). W php.ini mam:Kod error_reporting = E_ALL|E_STRICT & ~E_NOTICE
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 869 Pomógł: 53 Dołączył: 20.10.2003 Skąd: Przeworsk Ostrzeżenie: (0%) ![]() ![]() |
Możesz mi to dokładniej wytłumaczyć? Dać przykład? Zamiast:
masz:
Osobiście dla mnie taki układ jest bardziej czytelny. Co do angielskich nazw, to należy stosować się do tej zasady zawsze, nawet wtedy gdy programuje się tylko dla siebie ponieważ dobre nawyki trzeba u siebie wyuczyć od samego początku. -------------------- |
|
|
![]()
Post
#15
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
@Kildyt:
Jeśli usunięcie 4 znaków sprawia, że kod jest dla Ciebie bardziej czytelny to spoko ![]()
lub wręcz:
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
@Kildyt:
Można i tak, ale to jest objętne, przeważnie piszę nawiasy. Ciekawy sposób. Zrobiłem klasę obsługi sesji: Kod session_start(); class ObslugaSesji { private $login; public function __construct($login){ $this->login = $login; } public function rozpocznijSesje(){ if(!isset($_SESSION['zalogowany'])){ $_SESSION['zalogowany'] = true; $_SESSION['login'] = $this->login; }else{ session_regenerate_id(); } return true; } public function zakonczSesje(){ $zalogowany = $_SESSION['zalogowany']; session_destroy(); unset($_SESSION['zalogowany'], $_SESSION['login']); if(!empty($zalogowany)) return true; else return false; } } Teraz trochę o zastosowaniu tego. 1. W klasie Autoryzacja mam metodę wyloguj(). Myślałem, żeby do tej metody dopisać odniesienie do metody zakonczSesje() z klasy ObsługaSesji. Jak to piwinienem zrobić? 2. W klasie Autoryzacja mam metodę zaloguj(). Myślałem, żeby do tej metody dopisać odniesienie do metody rozpocznijSesje() z klasy ObsługaSesji. Jak to piwinienem zrobić? Poza tym to co byście ewentualnie zmienili w tej klasie? |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 869 Pomógł: 53 Dołączył: 20.10.2003 Skąd: Przeworsk Ostrzeżenie: (0%) ![]() ![]() |
@Kildyt: Jeśli usunięcie 4 znaków sprawia, że kod jest dla Ciebie bardziej czytelny to spoko ![]()
lub wręcz:
No mam tak. ![]() ![]() Drugiego sposobu nie znam, ale i tak uważam, że oba nie powinno się stosować ponieważ są one trochę wyjęte z sufitu. -------------------- |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 662 Pomógł: 45 Dołączył: 26.03.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@gcdreak - Jak pisałem jest to bez sensu. Metody magiczne get i set, powinno się używać jeśli zmienne przetrzymujesz np. w tablicach. Czym będzie się różnić ten kod:
od tego:
Odpowiedź: Oprócz większego kodu - niczym. Ten post edytował Moli 7.06.2009, 18:52:29 |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
To ciekawe co piszesz odnośnie metod magicznych, bo nigdy o tym nie słyszałem i dlatego trochę bez sensu (z tego wynika) ich użyłem.
Możesz podać jakiś przykład? Proszę jeszcze o odpowiedź na moje pytania, które zamieściłem wyżej - odnośnie metod klasy ObslugaSesji |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 662 Pomógł: 45 Dołączył: 26.03.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście tablice to tylko prosty przykład. Zastosować metod magicznych jest wiele ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 03:10 |