Guest User

Untitled

a guest
Dec 18th, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.51 KB | None | 0 0
  1. <?php
  2.  
  3.  
  4. class DataBase extends MySQLi{
  5.  
  6. /**
  7. * [$host description] адрес на сървъра
  8. * @var string
  9. */
  10. private $host = "localhost";
  11. /**
  12. * [$port description] порт на сървъра
  13. * @var integer
  14. */
  15. private $port = 3306;
  16. /**
  17. * [$user description] MySQL потребител
  18. * @var string
  19. */
  20. private $user = "root";
  21. /**
  22. * [$pass description] MySQL Парола
  23. * @var string
  24. */
  25. private $pass = "";
  26. /**
  27. * [$database description] Име на База данни
  28. * @var string
  29. */
  30. private $database = "kameno_08_08_2017";
  31. /**
  32. * [$mysqli description] инстанция към MySQLi
  33. * @var [object]
  34. */
  35. public $mysqli;
  36.  
  37. /**
  38. * [$charset description] енкондинг на данните
  39. *
  40. * @var [string]
  41. */
  42. public $charset = "utf8";
  43. /**
  44. * [$forbidden_db description] Бази данни към, които няма да се прави връзка
  45. * @var array
  46. */
  47. private $forbidden_db = array("mysql", "performance_schema", "phpmyadmin");
  48. /**
  49. * [$forbidden_queries description] SQL заявки, които няма да се изпълняват
  50. * @var array
  51. */
  52. private $forbidden_queries = array("DROP", "ALTER");
  53.  
  54.  
  55. public function __construct(){
  56. $this->mysqli = new \MySQLi($this->host, $this->user, $this->pass, $this->database);
  57.  
  58. if($this->mysqli->connect_errno){
  59. echo "Грешка: " . $this->mysqli->connect_error . " <br>";
  60. exit();
  61. }
  62. // mysqli_set_charset($this->mysqli, $this->charset);
  63. $this->mysqli->set_charset($this->charset);
  64. // echo "<br>Connection open!<br>";
  65. }
  66.  
  67. /**
  68. * връща името на БД
  69. * @return string
  70. */
  71. public function getDataBase(){
  72. return $this->database;
  73. }
  74. /**
  75. * Променя името на БД
  76. * @param [string]
  77. */
  78. public function setDataBase($db){
  79. if(!in_array($db, $this->forbidden_db)){
  80. return $this->database = $db;
  81. }
  82. }
  83. /**
  84. * @param [string]
  85. * @return [boolean or array]
  86. */
  87. public function sql($sql){
  88. // file_put_contents("logs/queries.txt", "QUERY[" . date("H:i:s") . "]: " . $sql . "\r\n", FILE_APPEND);
  89.  
  90. $action = strtolower(explode(" ", trim($sql))[0]);
  91.  
  92. if(($action == "insert") || ($action == "update")){
  93. $query = $this->mysqli->query($sql) ? true : false;
  94. return $query;
  95. }else{
  96. if($action == "alter"){
  97. $tableName = strtolower(explode(" ", trim($sql))[2]); // името на таблицата, която ще се обработва
  98.  
  99. if(!in_array($tableName, array_map("strtolower", $this->forbidden_db))){
  100.  
  101. if($query = $this->mysqli->query($sql)){
  102. $result = true;
  103. }else{
  104. $result = false;
  105. }
  106.  
  107. }else{
  108. $result = false;
  109. }
  110. }
  111.  
  112. if($action == "select"){
  113. if($query = $this->mysqli->query($sql)){
  114. if($query->num_rows > 0){
  115.  
  116. while($row = $query->fetch_assoc()){
  117. $result[] = $row;
  118. }
  119.  
  120. }else{
  121. $result = false;
  122. }
  123. }else{
  124. $result = false;
  125. }
  126. }
  127.  
  128.  
  129. if($action == "drop"){
  130. $result = false;
  131. }
  132.  
  133. return $result;
  134. }
  135. }
  136. /**
  137. * валидиране на подадена стойност преди да бъде вкарана в БД
  138. *
  139. * @param [string] $value
  140. * @return string
  141. */
  142. public function validate($value){
  143. if(!empty($value)){
  144. $str = trim($value);
  145. $str = htmlentities($str, ENT_QUOTES, "UTF-8");
  146.  
  147. $str = $this->mysqli->escape_string($str);
  148. }else{
  149. $str = "";
  150. }
  151.  
  152. return $str;
  153. }
  154.  
  155.  
  156. /**
  157. * Затваряне на SQL връзката
  158. */
  159. public function __destruct(){
  160. $this->mysqli->free_result;
  161. $this->mysqli->close;
  162. // echo "<br>Connection closed!<br>";
  163. }
  164. }
Add Comment
Please, Sign In to add comment