Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Ksiega gosci, pierwszy skrypt w object php ;p
marcio
post
Post #1





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


siemka dzis wieczorem postanowilem napisac sobie ksiege gosci na klasie nie na funckjach bo mysle ze to prostota i nawet ja laik nie mial bym z tym problemu wiec chcialbyc od was minimalnej pomocy oto skrypty mowie odrazy ze sa dlugie
klasa_ksiegi.php
  1. <?php
  2.  
  3.  
  4. class Ksiega {
  5. include('../config.php');
  6. var $zmien;
  7. var $token;
  8.  
  9. public function Wyswietl_form() {
  10.  
  11. echo("<html>\n
  12.  <head><meta http-equiv="content-type" charset="utf-8" /></head>\n<body>\n<h1>Ksiega gosci</h1>\n<form method="post" />\n<table widht="100%" bgcolor="#4E4E68" border="1" />\n<tr><td>Podaj nick :)<input type="text" name="Nick" /></td></tr>\n<tr><td>Wpisz wiadomosc<input type="text" name="message" /></td></tr>\n<tr><td width="80"><img src="token.php"></td><td><input type="text" name="token" /></td></tr>\n<tr><td align="right"><INPUT TYPE=image VALUE=submit src="buttons.php"/></td></tr>\n"); 
  13. }
  14.  
  15. public function bbcode() {
  16.  
  17.  
  18.  $this->zmien = htmlspecialchars($this->zmien);
  19.  $this->zmien = preg_replace("#(.*?)#si", "<A HREF='2' TARGET='top'>3</A>", $this->zmien);
  20.  $this->zmien = str_replace(":D","<img src='obrazki/biggrin.gif' />", $this->zmien);
  21.  $this->zmien = str_replace(":)","<img src='obrazki/smile.gif' />", $this->zmien);
  22.  $this->zmien = str_replace(":(","<img src='obrazki/confused.gif' />", $this->zmien);
  23.  $this->zmien = str_replace(";p","<img src='obrazki/tongue.gif' />", $this->zmien);
  24.  $this->zmien = str_replace(":]","<img src='obrazki/cool.gif' />", $this->zmien);
  25.  $this->zmien = str_replace("[:","<img src='obrazki/bigrazz.gif' />", $this->zmien);
  26.  $this->zmien = str_replace("()","<img src='obrazki/wink.gif' />", $this->zmien);
  27.  $this->zmien = preg_replace("#(.*?)#si", "<i>1</i>" $this->zmien);
  28.  $this->zmien = preg_replace("#(.*?)#si", "<b>1</b>" $this->zmien);
  29.  $this->zmien = preg_replace("#[ins](.*?)[/ins]#si", "<ins>1</ins>", $this->zmien);
  30.  $this->zmien = preg_replace("#[small](.*?)[/small]#si", "<small>1</small>", $this->zmien);
  31.  $this->zmien = preg_replace("#[big](.*?)[/big]#si", "<big>1</big>", $this->zmien);
  32.  return $this->zmien;
  33.  }
  34.  
  35. public function Sesja_tokena() {
  36.  
  37. $this->token = $_SESSION['randtoken'];
  38. }
  39.  
  40. public function Generuj_token() {
  41.  
  42. $generuj_liczby = rand(1, 1000);
  43. $this->token = substr(md5($generuj_liczby)0, 6);
  44. $_SESSION['randtoken'] = $this->token;
  45. }
  46.  
  47. public function Zwroc_token() {
  48.  
  49. return $this->token;
  50. }
  51.  
  52. public function Resetuj() {
  53.  
  54. $_SESSION['randtoken'] = "";
  55. $this->token = "";
  56. }
  57.  
  58. public function Zrob_obrazek_tokena() { 
  59.  
  60.  
  61.  header("Content-type: image/png"); 
  62. $image = @imagecreate(100,20); 
  63.  if($image) { 
  64.  
  65. $background = imagecolorallocate($image, 0,0,0); 
  66. $text = imagecolorallocate($image, 255,255,235); 
  67. imagestring($image, 4, 25,5, $this->token, $text); 
  68. header("Content-type: image/png"); 
  69. imagepng($image); 
  70. imagedestroy($image);
  71. } 
  72.  
  73. }
  74.  
  75. public function Date() {
  76.  
  77. $this->data = date('j/n/Y H:i:s;');
  78. }
  79.  
  80.  
  81. public function Dodaj_wpis() {
  82.  
  83. $this->ip = $_SERVER['REMOTE_ADRESS'];
  84.  
  85. $this->nick = htmlspecialchars($_POST['nick'];
  86.  
  87. $this->message = bbcode(htmlspecialchars($_POST['message']));
  88.  
  89. if($token->Zwroc_token() == $_POST['token'] && !empty($this->nick) && !empty($this->message)) {
  90.  
  91. $db = mysql_connect($this->pasy['host'], $this->pasy['login'], $this->pasy['haslo']);
  92.  
  93. $db->select_db($this->pasy['baza']);
  94.  
  95. if(!is_resource($this->db)) {
  96. echo('Polaczenie z baza niemozliwe prosze sprobowac pozniej');
  97.  
  98.  return;
  99. }
  100.  
  101. $this->zapytanie = sprintf('insert into ksiega(nick,message,data,ip) values('%s', '%s','$this->data', '$this->ip')');
  102.  
  103. mysql_real_escape_string($this->nick, $this->db);
  104.  
  105. mysql_real_escape_string($this->message, $this->db);
  106.  
  107. $db->query($zapytanie) or die('Polaczenie nie mozliwe prosze sprobowac pozniej');
  108.  
  109. if($this->zapytanie) {
  110.  
  111. echo('<Br><center><h2>Dziekuje za wpis<Br></h2></center>');
  112. else {
  113.  
  114. echo('Prosze wypelnic wszystkie pola');
  115. }
  116.  
  117. else {
  118.  
  119. echo('Podaj wlasciy token');
  120.  
  121. $token->Resetuj();
  122.  
  123.  }
  124.  
  125.  }  
  126.  
  127. }
  128.  
  129. }
  130.  
  131. public function Pokaz_ksiege() {
  132.  
  133. $db = mysql_connect($this->pasy['host'], $this->pasy['login'], $this->pasy['haslo']);
  134.  
  135. $db->select_db($this->['baza']);
  136.  
  137. if(!is_resource($this->db)) {
  138. echo('Polaczenie z baza niemozliwe prosze sprobowac pozniej');
  139.  
  140. return;
  141. }
  142.  
  143. $this->zapytanie('select nick,message,data from ksiega order by data desc')
  144.  
  145. $wynik = $db->query($zapytanie);
  146.  
  147. while($tab = $wynik->fetch_assoc()) {
  148.  
  149. echo('<tr><td>"Dodal: ".'$this->tab['nick'].'</td></tr>
  150. <tr><td>'.$this->tab['message'].'</td></tr>\n</table>\n</form>\n</body>\n</html>\n');
  151.  
  152.  
  153.  
  154.  
  155. ?>


to index.php

  1. <?php
  2. include('klasa_ksiegi.php');
  3.  
  4. $token = new Ksiega;
  5. $token->Generuj_token();
  6. $ksiega_gosci = new Ksiega;
  7. $ksiega_gosci->Wyswietl_form();
  8. $ksiega_gosci->Dodaj_wpis();
  9. $ksiega_gosci->Pokaz_ksiege();
  10. ?>


token.php

  1. <?php
  2. include('klasa_ksiegi.php');
  3.  
  4. $token = new Ksiega;
  5. $token->Sesja_tokena();
  6. $token->Zrob_obrazek_tokena();
  7. ?>


i buttons.php

  1. <?php
  2. header("Content-type: image/png");
  3. $image = @ImageCreate(60,25);
  4. $tlo = imagecolorallocate($image, 0,0,0);
  5. $kolor_tekst = imagecolorallocate($image, 5,255,47);
  6. $text = imagestring($image, 3,8,5, 'wyslij', $kolor_tekst);
  7. header("Content-type: image/png");
  8. imagepng($image);
  9. imagedestroy($image);
  10. ?>


Watpie zeby komus sie chcialo czytac caly kod ale przynajmniej zeby zobaczyl na klase bo cos chyba zle zrobilem albo czegos nie zrozumialem

Ten post edytował marcio 5.10.2007, 23:27:56
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Nie - oczywiście, że nie! Musisz tylko wkuć trochę teorii, a tą najlepiej znaleźć w dobrej książce. Po prostu OOP to sposób myślenia o aplikacji, a nie kod ujęty w klasie. Jak się nauczysz teroii, to potem świadomie możesz olewać część zasad. Zawsze jednak bedziesz wiedział, co jest, a co nie jest obiektowe w Twojej aplikacji.

Popatrz:
Tak sie powinieneś zabrać do projektowania.

Użytkownik może dodać wpis do księgi gości i oglądać wpisy innych użytkowników. Aby dodać wpis musi podać kod z obrazka zabezpieczającego przed spamen.

Podkreślone wyrazy są kandydatami na obiekty.
Użytkownik
Księga gości
Wpis
Obrazek

Do tego musisz znależć obiekty, które będą zarządzały tymi obiektami, lub ustalić relacje pomiędzy nimi.

Np.

  1. <?php
  2. // akcja to dodaj wpis
  3.  
  4. $user=new User('marcio');
  5. $user->login();
  6.  
  7. $post=new Post(); // nowy wpis
  8. $post->setTitle($title);//tytuł
  9. $post->setBody($body); //treść
  10. $post->setUser($user->getName()); // imie usera,który dodaje wpis
  11.  
  12. $pic=new Captcha($captchaText); // do obiektu capthc dodajemhy wprowadzony przez usera tekst
  13.  
  14. if($pic->isValid()) // jest poprawny
  15. {
  16. $ks=new GuestBook();
  17. $ks->addPost($post); // dodajemy wpis
  18. $ks->save(); //zapisujemy w bazie danych/pliku
  19. }
  20.  
  21. $ks->showPosts(); //pokazujemy dodane wpisy
  22. ?>


Ten przykładowy kod można nazwać obiektowym. pokazuje obiekty i ich wzajemne relacje. To, czego nie woidać, to bebechy, które nas teraz nie interesują.

Pozdrawiam.
Go to the top of the page
+Quote Post

Posty w temacie
- marcio   [php]Ksiega gosci   5.10.2007, 22:35:09
- - sf   - str_replace - powinna być pętla przy tej operacj...   6.10.2007, 06:33:09
- - Cysiaczek   Twoja klasa spełnia 7 funkcji, co jest 100% przekr...   6.10.2007, 07:21:24
- - dzesi   Cysiaczek Nie to ze sie czepiam ale ciągle czepias...   8.10.2007, 20:03:28
- - Cysiaczek   @dzesi - może i się czepiam - fakt. Sam też nie za...   9.10.2007, 08:28:30
- - marcio   @all sorki ze nie odpisywalem ale nie mialem neta ...   10.10.2007, 16:54:04
- - Sedziwoj   @marcio Jak programujesz obiektowo, to nie myślisz...   11.10.2007, 15:09:33
- - marcio   aj dzieki ale nie bede czytal ksiazki o javie bo m...   11.10.2007, 15:16:49
- - Cysiaczek   Tak - fajna rzecz - te karteczki to tzw. karty CRC...   11.10.2007, 15:18:36
- - marcio   nie wiem o co chodzi z tymi karteczkami   11.10.2007, 16:02:56
- - Cysiaczek   http://adanti.files.wordpress.com/2006/05/mia_CRC....   11.10.2007, 18:10:57
- - marcio   nie rozumiem co to ma wspolnego ale mozesz powied...   11.10.2007, 18:43:17
- - Cysiaczek   Pytasz, co jest źle? Dostajesz odpowiedzi. Sedziwo...   11.10.2007, 21:00:51
- - marcio   ale nie dziala a nepewno idzie to latwiej wytlumac...   12.10.2007, 05:27:32
- - Sedziwoj   @marcio I właśnie pokazujesz, że nie rozumiesz OOP...   12.10.2007, 10:44:03
- - marcio   czyli mam zrozumiec ze mam sobie dac spokoj z OOP?...   12.10.2007, 14:58:45
- - Cysiaczek   Nie - oczywiście, że nie! Musisz tylko wkuć tr...   12.10.2007, 15:25:21
- - marcio   dobra poddaje sie wyeliminowalem wszystkie syntax_...   14.10.2007, 13:46:55
- - Sedziwoj   [PHP] pobierz, plaintext <?php$token = new Toke...   14.10.2007, 20:27:17
- - marcio   moze dlatego ze nie zrozumialem w poscie wyzej wy...   14.10.2007, 21:28:22


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: 8.10.2025 - 19:17