Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Pojedyńcze klasy a formularze
mentoos
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 5.09.2009

Ostrzeżenie: (0%)
-----


Mam pytanie związanie z klasami i formularzami. Często jak piszę pojedyncze klasy w OOP, wykorzystuję formularze. To jest jasne. Problem jest taki, że jak klasa jest większa to robi się burdel, bo jest za dużo plików z formularzami do niej.
Poza tym, jeśli formularz jest w osobnym pliku, po wysłaniu go przekierowuje się do pliku klasy, co też nie jest zbyt ładne.
W kodzie klas HTML raczej nie powinno się używać. Jeśli korzysta się z MVC, to problem znika, ale czy jest sens pisania z MVC w jednej pojedynczej klasie np. do obsługi logowania?

Jak rozwiązujecie problem klas i formularzy? Oprócz używania MVC oczywiście.

Go to the top of the page
+Quote Post
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Po co ci klasa logowania (IMG:style_emoticons/default/blinksmiley.gif) Do takich rzeczy nie robi się klas .
Go to the top of the page
+Quote Post
mentoos
post
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 5.09.2009

Ostrzeżenie: (0%)
-----


Podałem tylko przykład.
Do jakich rzeczy najlepiej pisać klasy wg. ciebie? Miałbyś jakiś pomysł jak rozwiązać problem z formularzami w klasach, ale bez używania MVC.
Go to the top of the page
+Quote Post
Void
post
Post #4





Grupa: Zarejestrowani
Postów: 112
Pomógł: 15
Dołączył: 2.02.2007

Ostrzeżenie: (0%)
-----


Ja nie wiem jaki ty masz problem (IMG:style_emoticons/default/smile.gif) Tzn. nie wiesz jak łączyć formularze z obsługą klas? Jeżeli nie chcesz wykorzystywać MVC to chyba musisz napisać jakiś skrypt pośredniczący między formularzem, a klasą, np:

form.html:
  1. <form method="post" action="logowanie.php">
  2. Login: <input type="text" name="login" />
  3. Hasło: <input type="text" name="haslo" />
  4. <input type="submit" name="zaloguj" value="Zaloguj się" />
  5. </form>


User.php
  1. class User
  2. {
  3. // Dane użytkownika.
  4. private $username;
  5. private $password;
  6.  
  7. public function __construct($login, $pswd)
  8. {
  9. $this->username = $login;
  10. $this->password = $pswd;
  11. }
  12.  
  13. // Funkcja weryfikuje użytkownika (sprawdza, czy istnieje w bazie).
  14. public function authenticate()
  15. {
  16. $result = mysql_query('SELECT id FROM users WHERE username=' . $this->username
  17. 'AND password = ' . md5($this->password) . ' LIMIT 1');
  18.  
  19. if (mysql_num_rows($result) == 1) {
  20. // Użytkownik znaleziony w bazie - weryfikacja powiodła się.
  21. return true;
  22. } else {
  23. return false;
  24. }
  25. }
  26.  
  27. }


logowanie.php
  1. if (isset($_POST['zaloguj']))
  2. {
  3. require_once('User.php');
  4. $user = new User($_POST['login'], $_POST['haslo']);
  5. if ($user->authenticate())
  6. {
  7. // wykonuj dalsze działania
  8. }
  9. }

Pliki logowanie.php i form.html możesz oczywiście połączyć w jeden.

Jeżeli natomiast chcesz w pełni obiektowo obsługiwać formularze, możesz pokusić się o napisanie własnej klasy generującej formularze (choć może to być dosyć czasochłonne) lub poszukać podobnej gotowej. Tylko skoro nie wykorzystujesz MVC to pewnie nie potrzeba ci aż takich bajerów (IMG:style_emoticons/default/smile.gif)

Nie bawiłbym się jednak w generowaniu formularzy na sztywno poprzez metody klasy (metody typu "generateLoginForm" itp.), których cała zawartość to jedno wielkie echo. Takie rozwiązanie jest bez sensu - raz że brzydko wygląda w klasie, a dwa - jest dosyć trudne w późniejszej modyfikacji (trzeba biegać po różnych klasach i szukać metod wyświetlających formularze, żeby np. zmienić styl jakiegoś inputa)..

Ten post edytował Void 17.09.2009, 20:55:02
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 15:41