Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Skrypt rejestracji (OOP) - prośba o poprawę kodu
Testosteron
post
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 (IMG:style_emoticons/default/smile.gif)

Ten post edytował Testosteron 3.07.2014, 17:21:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Testosteron
post
Post #2





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

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


Ściągnąłem Symfony. Muszę przyznać, ze ten kod jest dla mnie jest trochę skomplikowany. Zauważyłem ponadto , że większość klas dziedziczy od sfValidatorRegex. Ona z kolei dziedziczy od sfValidatorString, itp. Jeszcze dobrze nie rozumiem zagadnień związanych z OOP. Myślałem, żeby nieco poduczyć się Javy. Nie tylko nauczę się lepiej programować obiektowo, ale ta wiedza też się nie zmarnuje:

1. Coraz więcej stron posiada mobilne wersje stron.
2. Często strony tworzą aplikacje, które mają za zadania rozreklamować daną stronę.
3. Czasami przydałoby mi się stworzyć aplikację desktopową, itp.

Chciałbym rozwijać się głównie w programowaniu stron WWW (znam też trochę jQuery, a JS musiałbym sobie przypomnieć). Moją największą bolączką w PHP jest właśnie OOP, a wydaje mi się, że Java jest dobrym językiem do nauki obiektówki.

PS. Jak znajdę chwilę czasu to postaram się stworzyć ten skrypt jeszcze raz, według wskazówek, które mi udzieliliście.
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.10.2025 - 10:31