Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Początki programowania obiektowego
Rookie
post
Post #1





Grupa: Zarejestrowani
Postów: 130
Pomógł: 1
Dołączył: 1.03.2008
Skąd: Olsztyn

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


Nie za bardzo rozumiem tego programowania obiektowego, więc dla treningu, chciałem napisać prosty skrypt do hashowania słów.
Kiedyś taki był mi potrzebny więc napisałem go, teraz chciałem uzyskać taki sam efekt stosując klasy ;p.
A więc pierwotny:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3. <head>
  4. <title>MD5 i SHA1</title>
  5. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  6. </head>
  7. <style type="text/css">body {font-size: 12; font-family: Arial;}</style>
  8. <body>
  9. <?php
  10. if(!empty($_POST['hash'])) {
  11. $md5 = $_POST['hash'];
  12. echo "Wpisane słowo: <b>$md5</b><br>";
  13. $md5 = md5($md5);
  14. echo "Zahashowane md5: <b>$md5</b><br>";
  15. $sha1 = $_POST['hash'];
  16. $sha1 = sha1($sha1);
  17. echo "Zahashowane sha1: <b>$sha1</b><br>";
  18. }
  19. ?>
  20. <form action="md5.php" method="POST">
  21. <label>Wprowadź słowo do zahashowania: </label><input type="text" name="hash" value=""><input type="submit" value="Koduj">
  22. </form>
  23. </body>
  24. </html>

I nowy:
  1. <?php
  2. class hash {
  3. var $hash;
  4. var $blad='';
  5. public function hash_md5($hash_md5) {
  6. $hash_md5 = $this->hash;
  7. $hash_md5 = md5($hash_md5);
  8. return $hash_md5;
  9. }
  10. public function hash_sha1($hash_sha1) {
  11. $hash_sha1 = $this->hash;
  12. $hash_sha1 = sha1($hash_sha1);
  13. return $hash_sha1;
  14. }
  15. }
  16. class sprawdz extends hash {
  17. function __construct($hash) {
  18. if(!isset($this->hash) OR empty($this->hash)) {
  19. $blad = '<span style="color: red;">Wypełnij pole</span>';
  20. return $blad;
  21. }
  22. }
  23. }
  24. $hashuj = new hash();
  25. $sprawdzaj = new sprawdz($_POST[hash]);
  26. if($sprawdzaj->blad!='') {
  27. echo $blad.$form;
  28. } else {
  29. $hashuj->hash_md5($_POST[hash]);
  30. $hashuj->hash_sha1($_POST[hash]);
  31. echo 'Wpisane słowo: ';
  32. echo $_POST[hash];
  33. echo '<br>MD5: ';
  34. echo $hashuj->hash_md5;
  35. echo '<br>SHA1: ';
  36. echo $hashuj->hash_sha1;
  37. echo '<br>';
  38. }
  39. ?>
  40. <form action="klasa_hashujaca.php" method="POST">
  41. <label>Wprowadź słowo do zahashowania: </label><input type="text" name="hash" value=""><input type="submit" value="Hashuj">
  42. </form>

Oczywiście pierwotny działa, a nowy... no właśnie.
Jak to bywa na początkach zawsze nie wychodzi.
Mimo, że nic nie wpisałem Pokazuje się:
Wpisane słowo:
MD5:
SHA1:
[formularz]
a gdy wpiszę słowo, pokazuje się wpisane słowo: [słowo]
i dalej przy MD5 i SHA 1 jest pusto.
PHP nie zgłasza żadnych błędów więc piszę tutaj, bo jak mówię ni znam się na programowaniu obiektowym i tym skryptem chcę załapać o co w tym dokładnie chodzi
Z góry dzięki za pomoc w nauce ;p
Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
blooregard
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




  1. echo $hashuj->hash_md5;

Skoro jest to wywołanie metody klasy (podpowiedź: FUNKCJI), to czegoś tu chyba brakuje.
W pozostałych wywołaniach analogicznie.

Druga uwaga: naucz się OOP zgodnego ze składnią PHP 5 (modyfikatory dostępu dla zmiennych, nie używaj var i takie tam)

//EDIT
Tu masz ok:
  1. $hashuj->hash_md5($_POST[hash]);

ale nie przypisujesz zwracanej wartości żadnej zmiennej, więc jak chcesz ją wyświetlić? W metodzie hash_md5() też nie ma 'echo', więc raczej Ci się to nie pokaże samo.

To jest w ogóle bez sensu:
  1. $hash_md5 = $this->hash;
  2. $hash_md5 = md5($hash_md5);
  3. return $hash_md5;

Powinno być chyba raczej w ten sposób:
  1. $this->hash = $hash_md5 //przypisujesz skladowej klasy argument przekazany metodzie
  2. return md5($this->hash); //zwracasz zahaszowaną wartosć


No i ta klasa sprawdz, to już jest przerost formy nad treścią, bo nie do tego służy dziedziczenie. Wystarczy, że zrobisz to sprawdzanie w klasie hash.

Ten post edytował blooregard 29.08.2009, 19:05:01
Go to the top of the page
+Quote Post

Posty w temacie


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: 24.08.2025 - 00:29