Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Pojedyńcze klasy a formularze
Forum PHP.pl > Forum > Przedszkole
mentoos
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.

Spawnm
Po co ci klasa logowania blinksmiley.gif Do takich rzeczy nie robi się klas .
mentoos
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.
Void
Ja nie wiem jaki ty masz problem 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 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)..
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.