Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Skrypt]Kontrola użytkownika
Forum PHP.pl > Inne > Oceny
ShadowD
Witam ponownie po krótkiej przerwie...

Przez dwa ostatnie dni próbowałem napisać w pełni funkcjonalną klasę do obsługi logowania, zapamiętywania hasła i kontroli użytkownika, czy mi się udało ocenicie sami. winksmiley.jpg

Kod:
http://wklej.org/hash/a408abdd6a/

Jest to jedna z pierwszych tak rozbudowanych klas którą napisałem, mam nadzieję że nie będziecie zbytnio narzekać. Proszę o ocenę kodu jak i funkcjonalności i o podpowiedzi co powinno być inaczej. winksmiley.jpg

Jeden z sposobów użycia:
  1. <?php
  2. $form=new users();
  3.    $form->conf(array('name'=>'admin','cookie'=>'TRUE'));
  4.    
  5.    $form->check();
  6.    
  7.    if(!$form->ifLogged())
  8.      echo
  9.        $form->form('In').
  10.        'Nick: '.
  11.        $form->inputNick().
  12.        'Hasło: '.
  13.        $form->inputPass().
  14.        'Zapamietaj hasło: '.
  15.        $form->inputRememberPass().
  16.        $form->submitButton('Zaloguj').
  17.        $form->endForm()
  18.      ;
  19.      
  20.    if($form->ifLogged())
  21.      echo
  22.        $form->idSession().
  23.        ' - Jesteś Zalogowany ;) <br />'.
  24.        $form->form('Out').
  25.        $form->submitButton('Wyloguj').
  26.        $form->endForm()
  27.      ;
  28.  
  29.    unset($form);
  30.    
  31.  ?>


Chciał bym również przypomnieć, że dopiero zaczynam zgłębiać tajniki programowania obiektowego, wiem że muszę do pisać do wszystkich funkcji tryb dostępu ale tym zajmę się na koniec. winksmiley.jpg

Pozdrawiam i z góry dziękuję!
bim2
Formy i inputy powinny być osobną klasą. Nie rozumiem też sessionUser. Chcesz sprawdzać co dokładnie? Zalogowanych userów? Wtedy można by sie pokusić za zmianę obslugi sesji w php na własną. smile.gif
bartg
Ja nie lubię też mieszać widoku z modelem, kontrolerem (jak kto nazywa). Teraz na sztywno masz takie inputy, a co jeśli chciałbym dodać fieldset albo inny input, czy wrzucić to do tabeli?
ShadowD
A więc wczoraj w nocy już zapomniałem napisać, że tak klasa będzie korzystała(dziedziczyła) z klasy form która będzie obsługiwać formularze, dodatkowo dołączę do tego kontroler mysql.

Co do kontroli użytkownika, chodzi głównie o ulepszenie kontroli sesji wbudowanej w php przez sprawdzanie ip (zawsze ktoś może pożyczyć sobie identyfikator sesji od innej osoby), możliwość wylogowania użytkownika za pomocą panelu admina (ktoś się zbytnio rozszalał więc blokuję mu konto i wylogowuję go).

Co do wstawienia tego do jakiegoś diva czy czegoś podobnego - nie ma żadnych problemów klasa jest tak skonstruowana by umożliwiała teo typu zabiegi, każdy input może być wyświetlany niezależnie od innego. A oto przykład:

  1. <?php
  2.    if(!$form->ifLogged())
  3.      echo
  4.        $form->form('In').
  5.        '<table><tr></td><td>Nick: </td><td>'.
  6.        $form->inputNick().
  7.        '</td><td>Hasło: </td><td>'.
  8.        $form->inputPass().
  9.        '</td><td>Zapamietaj hasło: </td><td>'.
  10.        $form->inputRememberPass().
  11.       '</td><td>'.
  12.        $form->submitButton('Zaloguj').
  13.       '</td></tr></table>.'
  14.        $form->endForm()
  15.       ;
  16.  ?>


Oczywiście przykład jest bardzo banalny można go znacznie powiększyć i rozbudować. A z fieldset sprawa wygląda identycznie. Co do zmiany inputa na np bottom to muszę się zastanowić i myślę o dodaniu identycznej funkcji jak i w przypadku input ale z bottomem, i faktycznie muszę dodać możliwość zmiany typu forma ale tym zajmę się po napisaniu klasy która będzie je konstruowała.

Dziękuję za opinię i z chęcią przeczytam nowe... winksmiley.jpg

Ps Sądzicie że powinienem pozbyć się wszystkich formów i pozostawić samą kontrolę a formy tworzyć jako oddzielny obiekt (tym sposobem oddzielę prezentację od kontrolera)questionmark.gif
Cysiaczek
Słowa klucze dla Ciebie, to:
- hermetyzacja
- zakres odpowiedzialności obiektu

Odpowiedz sobie na pytanie: Co Ci daje to, że ten kod jest ujęty w klasie.

Pozdrawiam
ShadowD
Hmmm, zakres odpowiedzialności obiektu - nie rozumiem ale zaraz poszperam coś na ten temat, co do tego co dostałem po napisaniu klasy to:
- Mogę w łatwy sposób stworzyć trzy logowania (nie martwiąc się o nazwy).
- Nie powtarzanie za każdym razem tego samego kodu.
- Łatwa implementacja w przyszłych projektach.

Chyba tyle ;P

Uważasz, że ta klasa jest bezsensowna i nie ma po co z niej korzystać??
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.