Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa hashująca
Rookie
post
Post #1





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

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


Witam,
nie dawno zacząłem bawić się programowaniem obiektowym w php.
Wczoraj wieczorem skończyłem prosty skrypt, który hashuje wpisane słowo na dowolny algorytm hashujący, do wyboru do koloru, są wszystkie możliwości.
Ma obsługę błędów, po pozostawieniu któregokolwiek pustego pola, pokazywany jest odpowiedni komunikat. Jest odporny na ataki XSS.
Oczywiście graficznie jest goły ale można go dowolnie ubrać w jakąś skórkę (IMG:style_emoticons/default/smile.gif)
Proszę bardzo może komuś się przyda, najprostszy jaki mógł być, wypociny wypocone z 1-dniowej nauki programowania obiektowego (IMG:style_emoticons/default/smile.gif) :
  1. <?php
  2. $tablica = hash_algos();
  3. $anty_xss_hash = htmlspecialchars(trim($_POST[hash]));
  4. class buduj {
  5. function strona() {
  6. ?>
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  8. <html>
  9. <head>
  10. <title>Hashowanie</title>
  11. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  12. <style type="text/css">body {font-size: 12; font-family: Arial;} .formularz {width: 200px;} .wybor {width: 204px;}</style>
  13. </head>
  14. <body>
  15. <?php
  16. }
  17. function stopka() {
  18. ?>
  19. </body>
  20. </html>
  21. <?php
  22. }
  23. }
  24. class hash {
  25. var $hash;
  26. var $rodzaj;
  27. public $blad='';
  28. public function hashuj($zahashuj) {
  29. $rodzaj = $this->rodzaj;
  30. if(in_array($rodzaj, hash_algos())) {
  31. $zahashuj = $this->hash;
  32. $zahashuj = hash($rodzaj, $zahashuj);
  33. return $zahashuj;
  34. } else {
  35. $this->blad = '<span style="color: red;">Nie ma takiego algorytmu hashującego</span><br>';
  36. echo $this->blad;
  37. }
  38. }
  39. public function czy_jest_wpis($pusto, $pusto2) {
  40. $pusto = $this->hash;
  41. $pusto2 = $this->rodzaj;
  42. if(strlen($pusto) < 1 || strlen($pusto2) < 1) {
  43. $this->blad = '<span style="color: red;">Wypełnij pola</span><br>';
  44. echo $this->blad;
  45. }
  46. }
  47. }
  48. $zbuduj = new buduj();
  49. $zbuduj->strona();
  50. $hashuj = new hash();
  51. $hashuj->hash = $anty_xss_hash;
  52. $hashuj->rodzaj = $_POST[rodzaj];
  53. if (isset($_POST[hashowanie])) {
  54. $hashuj->czy_jest_wpis($anty_xss_hash, $_POST[rodzaj]);
  55. if($hashuj->blad=='') {
  56. echo '<table><tr><td align="right">Wpisana fraza:</td><td><b>';
  57. echo $anty_xss_hash;
  58. echo '</b></td></tr><tr><td>Zahashowane ';
  59. echo $_POST[rodzaj];
  60. echo ':</td><td><b>';
  61. echo $hashuj->hashuj($anty_xss_hash);
  62. echo '</b></td></tr></table>';
  63. }
  64. }
  65. ?>
  66. <form action="klasa_hashujaca.php" method="POST">
  67. <table><tr><td>Wybierz algorytm hashujący:</td>
  68. <td><select name="rodzaj" class="wybor">
  69. <option value="">Wybierz</option>
  70. <?php
  71. foreach ($tablica as $wyswietl){
  72. if ($_POST[rodzaj] == $wyswietl) $zaznaczone = ' selected';
  73. else $zaznaczone = '';
  74. echo "<option$zaznaczone>$wyswietl</option>\r\n";
  75. }
  76. ?>
  77. </select></td></tr><tr><td>Wpisz frazę do zahashowania:</td>
  78. <td><input class="formularz" type="text" name="hash" value=""></td></tr>
  79. <tr><td colspan="2"><input name="hashowanie" type="submit" value="Hashuj"></td></tr>
  80. </form>
  81. <?php $zbuduj->stopka; ?>

Mam nadzieję, że komuś się przyda.
Pozdrawiam.

Ten post edytował Rookie 31.08.2009, 00:18:19
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Rookie
post
Post #2





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

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


Piszę public $blad, żeby potem poza klasą mógł sprawdzić czy jest pusty czy nie.
To w takim razie kiedy wg ciebie użył bym OOP ?
Dopiero co się zacząłem tego uczyć w wyżej wymienionej książce tylko tak mam wyjaśnione, zamówiłem już inną ale jest w drodze ;p
i przy okazji jak już jesteśmy przy temacie, to czego użyć zamiast var $zmienna, nic? po prostu $zmienna?, a może czegoś innego.
I wreszcie może podpowiesz jak usunąć tą masę błędów?:
Cytat
Notice: Use of undefined constant hash - assumed 'hash' in C:\Documents and Settings\\Moje dokumenty\HTML\Witryna\klasa_hashujaca.php on line 5

Notice: Undefined index: hash in C:\Documents and Settings\\Moje dokumenty\HTML\Witryna\klasa_hashujaca.php on line 5

Notice: Use of undefined constant rodzaj - assumed 'rodzaj' in C:\Documents and Settings\\Moje dokumenty\HTML\Witryna\klasa_hashujaca.php on line 54

Notice: Undefined index: rodzaj in C:\Documents and Settings\\Moje dokumenty\HTML\Witryna\klasa_hashujaca.php on line 54

Notice: Use of undefined constant hashowanie - assumed 'hashowanie' in C:\Documents and Settings\\Moje dokumenty\HTML\Witryna\klasa_hashujaca.php on line 55

Notice: Undefined property: buduj::$stopka in C:\Documents and Settings\\Moje dokumenty\HTML\Witryna\klasa_hashujaca.php on line 83


Ten post edytował Rookie 31.08.2009, 08:45:10
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: 26.12.2025 - 04:15