Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][OOP] Dziedziczenie klas , wychwytywanie danych
GameMaker
post
Post #1





Grupa: Zarejestrowani
Postów: 149
Pomógł: 2
Dołączył: 31.01.2010
Skąd: Konstancin-Jeziorna

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


Otóż napisałem 2 klasy :

- 1 sprawdzanie czy user jest zalogowanych (autoryzacja)
- 2 głosowanie , ocena artykułu , dziedziczy po 1szej

Mam pytanie :

Czy napisałem to poprawnie , bo zaczyna przygodę z OOP pisząc swój mały cmsik .

Czekam na sugestie do plików, ukazanie błędów czy innych możliwości łatwiejszego zapisu.
  1. <?php
  2.  
  3. ///////////klasa usera auth class////////////
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13. class User {
  14.  
  15. public $logged_in = null;
  16. public $user_level = null;
  17.  
  18.  
  19. function __construct($db)
  20. {
  21. $this->_db = $db;
  22. $this->startSession();
  23. }
  24.  
  25.  
  26.  
  27. public function loginCheck()
  28. {
  29. if (isset($_SESSION['id']) && $_SESSION['id'] > 0) {
  30.  
  31.  
  32. return true;
  33. } else {
  34. return false;
  35. }
  36. }
  37.  
  38. public function levelCheck()
  39. {
  40. $id = intval($_SESSION['id']);
  41. $q = $this->_db->query("Select * from mpa_users where id='$id'");
  42.  
  43. if($this->_db->num_rows($q) == 1)
  44. {
  45. $row = $this->_db->fetch_array($q);
  46.  
  47. if($row['admin'] == 1)
  48. {
  49. return 7;
  50. }elseif($row['admin'] == 0 && $row['premium'] == 1 && $row['premium_time'] > time())
  51. {
  52.  
  53. return 2;
  54.  
  55. }elseif($row['admin'] == 0 && $row['premium'] == 1 && $row['premium_time'] < time())
  56. {
  57. $this->_db->query("Update mpa_users set premium='0' where id='$id'");
  58.  
  59. return 1;
  60.  
  61. }elseif($row['admin'] == 0 && $row['premium'] == 0)
  62. {
  63.  
  64. return 1;
  65. }
  66.  
  67. }
  68. else
  69. {
  70.  
  71. }
  72.  
  73. }
  74.  
  75.  
  76. private function startSession()
  77. {
  78. $this->logged_in = $this->loginCheck();
  79. if($this->logged_in)
  80. {
  81. $this->user_level = $this->levelCheck();
  82. }
  83. else
  84. {
  85. $this->user_level = 0;
  86. }
  87.  
  88. }
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97. }
  98.  
  99.  
  100. ?>
  101.  
  102.  
  103.  
  104.  
  105. //////////////Rate Class
  106.  
  107. <?php
  108.  
  109.  
  110.  
  111. class Rating extends User{
  112.  
  113.  
  114.  
  115.  
  116.  
  117. function __construct($db)
  118.  
  119. {
  120.  
  121. $this->_db = $db;
  122. $this->AllowRate = $this->loginCheck();
  123.  
  124.  
  125. }
  126.  
  127.  
  128.  
  129.  
  130. private function checkRate($smth,$type)
  131. {
  132. if($this->AllowRate)
  133. {
  134. $this->movie = intval($smth['movie']);
  135. $this->user_id = intval($_SESSION['id']);
  136. $this->type = intval($type);
  137. $check = $this->_db->num_rows($this->_db->query("Select * from mpa_rate where userid='".$this->user_id."' and fileid='".$this->movie."' and type='".$this->type."'"));
  138. if($check == 0)
  139. {
  140. return true;
  141.  
  142. }
  143. else
  144. {
  145. return false;
  146.  
  147. }
  148.  
  149. }
  150. else
  151. {
  152. return false;
  153.  
  154. }
  155.  
  156.  
  157. }
  158.  
  159.  
  160. private function checkData($smth,$type)
  161.  
  162. {
  163. if(is_array($smth))
  164.  
  165. {
  166. $this->value = intval($smth['value']);
  167. $this->movie = intval($smth['movie']);
  168. $this->type = intval($type);
  169. $error = 0;
  170.  
  171. if($this->value > 5)
  172. {
  173. $error++;
  174. }
  175.  
  176. switch($this->type)
  177. {
  178. case 1:
  179. if($this->_db->num_rows($this->_db->query("Select * from mpa_movies where id='".$this->movie."'")) == 0)
  180. {
  181. $error++;
  182.  
  183. }
  184.  
  185.  
  186. break;
  187. case 2:
  188.  
  189. break;
  190.  
  191. default :
  192.  
  193. $error++;
  194. break;
  195.  
  196. }
  197.  
  198.  
  199. if($error == 0)
  200. {
  201.  
  202. return true;
  203. }
  204. else
  205. {
  206.  
  207. return false;
  208. }
  209.  
  210.  
  211.  
  212.  
  213.  
  214. }
  215. else
  216. {
  217.  
  218. return false;
  219. }
  220.  
  221.  
  222.  
  223. }
  224.  
  225.  
  226.  
  227.  
  228. public function doRate($smth,$type)
  229. {
  230.  
  231. if(is_array($smth))
  232. {
  233. if($this->AllowRate && $this->CheckRate($smth,$type) && $this->checkData($smth,$type))
  234. {
  235. $this->value = intval($smth['value']);
  236. $this->user_id = intval($_SESSION['id']);
  237. $this->movie = intval($smth['movie']);
  238. $this->type = intval($type);
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248. $check = $this->_db->query("INSERT INTO `mpa_rate` (`id`, `userid`, `fileid`, `type`, `value`) VALUES (NULL, '".$this->user_id."', '".$this->movie."', '$type', '".$this->value."');");
  249.  
  250. if($check)
  251.  
  252. {
  253. return "good";
  254. }
  255. else
  256. {
  257. return "bad";
  258.  
  259. }
  260.  
  261. }
  262. else
  263. {
  264.  
  265. ///Sypie ze brak dostepu
  266. return "bad";
  267. }
  268. }
  269. else
  270. {
  271.  
  272. return "bad22";
  273. }
  274.  
  275.  
  276. }
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287. }
  288.  
  289.  
  290.  
  291.  
  292.  
  293. ?>
  294.  







Update plików

Ten post edytował GameMaker 30.10.2011, 09:47:41


--------------------
Movie CMS v 0.1 - Postęp 37 45 49 53 69 %
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
marcio
post
Post #2





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

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


A wiec polecilbym ci lektore na temat:
  • Kompozycja
  • Hermentyzacji
  • Sql Injection
  • MVC/MVP
  • Acl

Stosuj wciecia w kodzie bo jest on nieczytelny chyba ze to wina parser'a forum.

O kompozycji bo Obiekt User nie ma nic wspolnego z Rating zeby po nim dziedziczyla.

Metoda: loginCheck()
Nie sprawdza w ogole czy uzytkownik jest poprawnie zalogowany wystarczy ze ustawie sobie sesje na id jakiegokolwiek user'a i rozpozna mnie jako uzytkownika twojego serwisu...

Stosuj jakies unikalne id/hash dla uzytkownika i zapisuj je w sesji przy logowaniu potem w metodzie loginCheck() sprawdzaj czy hash z sesji zgadza sie z user'em aktualnie zalogowanym jesli tak to wtedy mozesz powiedziec ze jest zalogowany...

Mozesz tez sprawdzac ip i user agent.

Ten post edytował marcio 30.10.2011, 10:46:44


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
GameMaker
post
Post #3





Grupa: Zarejestrowani
Postów: 149
Pomógł: 2
Dołączył: 31.01.2010
Skąd: Konstancin-Jeziorna

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


Co do autoryzacji , to mogę zrobić na zasadzie , że przy każdym logowaniu tworze hash usera , dodaje go do bazy danych oraz zapisuje go w sesji , przy każdej akcji wykonanej przez usera porównuje hashe , jeśli hashe sa złe to niszcze sesje oraz np dodaje jakis log do bazy ze blad zbieznosci danych


--------------------
Movie CMS v 0.1 - Postęp 37 45 49 53 69 %
Go to the top of the page
+Quote Post
marcio
post
Post #4





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

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


Tez moze byc...ja ci poradzilem co i jak a ty zrobisz jak zechcesz wink.gif


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post

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 Aktualny czas: 21.08.2025 - 07:13