Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [klasa] kontroler żądań
dyktek
post 1.06.2006, 14:52:05
Post #1





Grupa: Zarejestrowani
Postów: 240
Pomógł: 0
Dołączył: 18.01.2004
Skąd: rzeszów / kraków

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


Witam, napisałem ostatnio kontroler żądań, na razie wyłapuje dane GET i POST oraz filtruje dowolnie wybrane klucze lub wszystkie klucze. Zalezy mi raczej na tym zeby ktos spojrzał na to okiem fachowca smile.gif wiec wklejam to do tego działu

  1. <?php
  2. /* 
  3. @ KONTROLER
  4. @dyktek/hadzia...
  5. -------------------------------------------------INFO------------------------------------------------------------
  6. @ $oKon = new kontroler;
  7. @ $oKon->exclute('pole', 'pole2') - pola, ktore maja byc pominiete przy filtrowaniu danych
  8. @ $oKon->prepare();
  9. @ ?index.php?module=artykuly&pole=dyktek&id=23
  10. @ ### wartosc module ### - okresla modul, ktory bedzie zaladowany
  11. @ pozostale klucze moga byc dowolne
  12. --------------------------------------------------------------------------------------------------------------------
  13. @@@ CHANGE LOG @@@
  14. - start 27.05.06
  15. - ukonczona wersja 0.1.9
  16. */
  17.  
  18. class kontroler
  19. {
  20. protected $aGet = array();
  21. protected $aPost = array();
  22.  
  23. /* tablica z polami wykluczonymi 
  24. przy sprawdzaniu */
  25. protected $aExcluteItem = array();
  26.  
  27. /* tablica z nazwami pol 
  28. ktore maja zostac sprawdzone
  29. pod katem nieprawidlowych znakow*/
  30. protected $aClean = array();
  31.  
  32. /* tablica zawierajaca pola do ktorych 
  33. wprowadzono niedozwolone znaki */
  34. protected $aIncorrectRequest = array();
  35.  
  36. /* nazwa katalogu z modelami */
  37. protected $sDir = 'model';
  38.  
  39. /* wyrazenie z niechcianymi (niedozwolonymi) znakami */
  40. protected $regExp = '/('|")/';
  41.  
  42.  
  43. public function __construct(){
  44. $this->aGet = $_GET;
  45. $this->aPost = $_POST;
  46. }
  47.  
  48. /* czy klucz istnieje w tablicy */
  49. private function key_exists($sKey, $aTab){
  50. if(array_key_exists($sKey, $aTab)) 
  51. return true; 
  52. else 
  53. return false;
  54. }
  55.  
  56. /* czy klucz module przenosi prawidlowa nazwe */
  57. private function valid_module($aTab){
  58. if($this->key_exists('module', $aTab)){
  59. if(preg_match('/^(w+)$/', $aTab['module']))
  60. return true;
  61. else
  62. return false;
  63. }
  64. }
  65.  
  66. /* czy istnieje model */
  67. private function is_module($aTab){
  68. $file_dir = ''.$this->sDir.'/'.$aTab['module'].'.php';
  69. if(file_exists($file_dir))
  70. return true;
  71. else
  72. return false;
  73. }
  74.  
  75. /* @ prepare_array($aTab)
  76. @ usuwa z tablicy ktora jest transportowane zadanie
  77. @ pola, ktore maja byc pominete przy sprawdzaniu
  78. @ pola te transportowane sa w tablicy $this->aExcluteItem
  79. @ w/w tablica jest tworzona przez metode exclute
  80. */
  81. private function prepare_array($aTab){
  82. foreach($this->aExcluteItem as $sValue){
  83. foreach($aTab as $key => $value){
  84. if($sValue != $key)
  85. $aNewArray[$key] = $value;
  86. }
  87. unset($aTab);
  88. $aTab = $aNewArray;
  89. unset($aNewArray);
  90. }
  91. $this->aClean = $aTab;
  92. $iStart = 0;
  93.  foreach($this->aClean as $key => $value){
  94. $aNewArray[$iStart++] = $key;
  95.  }
  96.  unset($this->aClean);
  97.  return $this->aClean = $aNewArray;
  98. }
  99.  
  100. /* @ check_values($aArray, $sMethod)
  101. @ metoda sprawdza elementy tablicy pod katem
  102. @ niedozwolonych znakow, ktore sa definiowane w $this->regExp
  103. */
  104. private function check_values($aArray, $sMethod){
  105. $aSource = $this->prepare_array($aArray);
  106. $iA = 0;
  107. for($i = 0; $i < count($aSource); $i++){
  108. if(preg_match($this->regExp, $aArray[$aSource[$i]])){
  109. $this->aIncorrectRequest[$aSource[$i]] = $aArray[$aSource[$i]];
  110. $this->aIncorrectRequest[$iA++] = $aArray[$aSource[$i]];
  111. }
  112. }
  113. return $this->aIncorrectRequest;
  114. }
  115.  
  116. /* @ exclute()
  117. @ metoda tworzy tablice z polami
  118. @ ktore maja zostac pominiete przy 
  119. @ sprawdzaniu pod katem niedozwolonych zankow
  120. */
  121. public function exclute(){
  122. $iArgs = func_num_args();
  123. $this->aExcluteItem = func_get_args();
  124. return $this->aExcluteItem;
  125. }
  126.  
  127. /* @ prepare()
  128. @ metoda zwraca jako tablice
  129. @ informacje o wszystkich zadaniach
  130. @ oraz informacje o zadaniach, ktore
  131. @ w zawieraja niedozwolone znaki
  132. */
  133. public function prepare(){
  134. if(count($this->aGet) > 0){
  135. if($this->valid_module($this->aGet)){
  136. if($this->is_module($this->aGet))
  137. return array($this->aGet['module'] ,$this->aGet ,$this->check_values($this->aGet, '$_GET'));
  138. else
  139. throw new Exception('nie ma takiego modulu');
  140. } else {
  141. throw new Exception('nieprawidlowa nazwa modulu');
  142. }
  143. elseif(count($this->aPost) > 0){
  144. if($this->valid_module($this->aPost)){
  145. if($this->is_module($this->aPost))
  146. return array($this->aPost['module'], $this->aPost ,$this->check_values($this->aPost, '$_POST'));
  147. else
  148. throw new Exception('nie ma takiego modulu');
  149. } else {
  150. throw new Exception('nieprawidlowa nazwa modulu');
  151. }
  152. }
  153. }
  154.  
  155. $oKon = new kontroler();
  156.  
  157. $oKon->exclute('module', 'id');
  158.  
  159. try {
  160. $dane = $oKon->prepare();
  161. echo'<pre>';
  162. print_r($dane);
  163. echo'</pre>';
  164. }
  165. catch(Exception $e) {
  166. echo $e->getMessage();
  167. }
  168. ?>


Ten post edytował dyktek 1.06.2006, 14:55:57
Go to the top of the page
+Quote Post

Posty w temacie


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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:51