Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Skrypt rejestracji (OOP) - prośba o poprawę kodu
Testosteron
post 3.07.2014, 17:17:30
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 2
Dołączył: 15.09.2011

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


Witajcie!

Chcę nauczyć się programowania obiektowego. Niestety, kursy internetowe opierają się na nieco głupich przykładach, w stylu:
- zaszczekaj burku
- hau hau
Nie ma to przełożenia na realne problemy z jakimi stykamy się w programowaniu. W mojej książce, "PHP i MySQL. Vademecum profesjonalisty" także programowanie obiektowe nie zostało dobrze opisane. Postanowiłem więc spróbować napisać coś prostego. W moim przypadku był ro system rejestracji. Skrypt działa w 100%, chociaż nie jest dokończony (nie ma walidacji hasła, a walidacja loginu też nie jest w pełni skończona). Chodzi mi raczej o samą zasadę działania. Od razu mówię, że jest to mój PIERWSZY, obiektowy projekt pisany bez żadnego wzoru. Zależy mi na tym, żeby ktoś poradził, co należy zmienić.
  1. <?php
  2. /* class connect{
  3.   function __construct(){
  4.   $polaczenie = @new mysqli('localhost', 'root', 'haslo', 'login');
  5.   if (mysqli_connect_errno() != 0){
  6.   echo '<p>Wystąpił błąd połączenia: ' . mysqli_connect_error() . '</p>';
  7.   }
  8.   }
  9. }
  10. */
  11.  
  12. class formularz{
  13. function wyswietl(){
  14. echo"<table>
  15. <form action='register.php' method='post'>
  16. <tr><td>Login:</td><td><input type='text' name='login'></td></tr>
  17. <tr><td>Password:</td><td><input type='password' name='pass'></td></tr>
  18. <tr><td><input type='submit' value='zarejestruj'></td></tr></form>
  19. </table>";
  20. }
  21.  
  22. }
  23.  
  24. class walidacja extends formularz{
  25.  
  26. //dodawanie usera
  27. function __construct(){
  28. $mysqli = new mysqli('localhost', 'root', 'haslo', 'login');
  29. $login = $mysqli->real_escape_string($_POST['login']);
  30. $pass = $mysqli->real_escape_string($_POST['pass']);
  31.  
  32. if (empty($login) || empty($pass) ){
  33. $this->wyswietl();
  34. } else {
  35. if ($this->sprawdz_login($login) ){
  36. $query = $mysqli->query("INSERT INTO login VALUE('" . $login . "', '" . $pass . "')");
  37. if ($query){
  38. echo 'user został dodany';
  39. } else {
  40. echo 'blad';
  41. }
  42. }
  43.  
  44. }
  45. }
  46.  
  47. //Poprawność loginu
  48. function sprawdz_login($login){
  49. $login = $_POST['login'];
  50. if (strlen($login) < 4){
  51. echo 'login musi miec przynajmniej 4 znaki';
  52. } else {
  53. return true;
  54. }
  55. }
  56. }
  57.  
  58.  
  59.  
  60. $formularz = new walidacja;
  61.  
  62. ?>

Na początku chciałem napisać klasę connect (obecnie jest zawarta w komentarzu), jednak miałem problem z wykorzystaniem jej, tzn. zależy mi, żeby w jednej klasie zawrzeć wszystkie dane dotyczące logowania do mysql i później żebym mógł w innych klasach wykorzystywać wszystkie metody mysqli. Niestety miałem z tym problem. Jeżeli ktoś wie jak to zrobić, to byłbym także wdzięczny za odpowiedź.

pozdrawiam smile.gif

Ten post edytował Testosteron 3.07.2014, 17:21:48
Go to the top of the page
+Quote Post

Posty w temacie
- Testosteron   [PHP] Skrypt rejestracji (OOP) - prośba o poprawę kodu   3.07.2014, 17:17:30
- - ctom   do przemyślenia : co ma wspólnego "class wali...   3.07.2014, 17:57:45
- - SmokAnalog   Po pierwsze takie małe kosmetyczne sprawy: Nazwy k...   3.07.2014, 18:16:58
- - Testosteron   [PHP] pobierz, plaintext <?php/* class connect{...   4.07.2014, 08:43:29
- - Turson   Dalej masz te same błędy: Nazewnictwo klas Ogólnie...   4.07.2014, 08:50:45
- - Testosteron   * Nazewnictwo to mały pikuś. Ten skrypt miał być w...   4.07.2014, 09:07:30
- - aras785   Odnośnie ECHO to nigdy nie używaj tego w metodach ...   4.07.2014, 09:31:46
- - SmokAnalog   Dziedziczenie jest wspaniałe i daje mnóstwo korzyś...   4.07.2014, 09:40:17
- - Testosteron   Nie wiem, czy dobrze Cię zrozumiałem. Mogę stworzy...   4.07.2014, 18:22:34
- - pedro84   @Testosteron - nie. Przeczytałeś w ogóle post oraz...   4.07.2014, 23:26:45
- - Testosteron   Czytałem, ale przed samym wyjściem. A metody walid...   5.07.2014, 08:40:52
- - pedro84   Walidacja moim zdaniem powinna być osobnym bytem. ...   5.07.2014, 10:32:38
- - Testosteron   Ściągnąłem Symfony. Muszę przyznać, ze ten kod jes...   5.07.2014, 16:44:24
- - pedro84   Chodziło mi o Symfony 2. Najpierw musisz poznać p...   5.07.2014, 19:03:18
- - Testosteron   Chodziło mi o aplikacje na urządzenia mobilne. Duż...   17.07.2014, 07:55:48
- - Pyton_000   Drobne uwagi co do kodu. W klasach dziedziczących ...   17.07.2014, 08:31:45
- - golabow   Może pomyśl o klasie abstrakcyjnej, wydzielisz do ...   17.07.2014, 09:24:11
- - Testosteron   Macie rację. Postaram się poprawić kod. Tylko, że ...   17.07.2014, 20:29:58
- - pedro84   A właściwie po co Ci metoda, w której klasa pluje ...   17.07.2014, 23:52:04
- - Testosteron   No niby mogę, ale z drugiej strony w widoku można ...   18.07.2014, 13:48:29


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

 



RSS Wersja Lo-Fi Aktualny czas: 14.06.2025 - 19:37