Advertisement
ardann

Class Backend [ctf_forstone]

May 12th, 2019
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.46 KB | None | 0 0
  1. <?php
  2. class ctf{
  3.  
  4.     function __construct($hostname, $username, $password, $database){
  5.         $this->connect($hostname, $username, $password, $database);
  6.     }
  7.  
  8.     /**
  9.      *
  10.      * Melakukan koneksi ke database
  11.      *
  12.      */
  13.     function connect($hostname, $username, $password, $database){
  14.         $this->connection = mysqli_connect($hostname, $username, $password, $database);
  15.     }
  16.  
  17.     /**
  18.      *
  19.      * Menutup koneksi database
  20.      *
  21.      */
  22.     function close(){
  23.         return mysqli_close($this->connection);
  24.     }
  25.  
  26.     /**
  27.      *
  28.      * Mengeksekusi query ke database
  29.      *
  30.      */
  31.     function query($query){
  32.         $this->get = mysqli_query($this->connection, $query);
  33.         //$this->close();
  34.         return $this;
  35.     }
  36.  
  37.     /**
  38.      *
  39.      * Esaping string to prevent SQL injection !1!1! hihihi
  40.      *
  41.      */
  42.     function escape($query, $replace = 0){
  43.         if ($replace) {
  44.             $mixed = array(' ', '(', ')', '[', ']', '/', '\'', '<', '>','^','.','{', '}', ';', ',', '@', '~', '#', '!', '$', '+', '?', '%', '&', '*', '"', '`', '=', '|', '&');
  45.             $query = str_replace($mixed, array(""), $query);
  46.         }
  47.         return mysqli_real_escape_string($this->connection, $query);
  48.     }
  49.  
  50.     /**
  51.      *
  52.      * @param $id_user adalah id user
  53.      * @see escape
  54.      * @see query
  55.      * @see fetch
  56.      *
  57.      * Untuk mendapatkan data user dari semua column
  58.      *
  59.      */
  60.     function getUserbyId($id_user){
  61.         if (!is_numeric($id_user) || !$this->isUserExistsbyId($id_user)) {
  62.             return false;
  63.         }
  64.         $sql = $this->query("SELECT * FROM `users` WHERE `id` = '{$id_user}';");
  65.         if ($sql) {
  66.             return $sql->fetch();
  67.         } else {
  68.             return false;
  69.         }
  70.         //$this->close();
  71.     }
  72.  
  73.     /**
  74.      *
  75.      * @param $id_user adalah id user
  76.      * @see getUserbyId (untuk mendapatkan data user dari id user)
  77.      *
  78.      * Mendapatkan data tugas-tugas yang sudah selesai dari column completed_task
  79.      *
  80.      */
  81.     function getCompletedTask($id_user){
  82.         if (!is_numeric($id_user)) {
  83.             return false;
  84.         }
  85.         $user = $this->getUserbyId($id_user);
  86.         if ($user) {
  87.             return explode("|", $user["completed_task"]);
  88.         } else {
  89.             return false;
  90.         }
  91.        
  92.     }
  93.  
  94.     /**
  95.      *
  96.      * @param $id_user adalah id user
  97.      * @param $id_task adalah id soal
  98.      * @see getCompletedTask
  99.      *
  100.      * Mengecek apakah tugas sudah selesai atau sudah pernah dikerjakan
  101.      *
  102.      */
  103.     function isTaskCompleted($id_user, $id_task){
  104.         if (!is_numeric($id_task) || !is_numeric($id_user)) {
  105.             return false;
  106.         }
  107.         $tasks = $this->getCompletedTask($id_user);
  108.         if ($tasks) {
  109.             return in_array($id_task, $tasks);
  110.         }else {
  111.             return false;
  112.         }
  113.     }
  114.  
  115.     /**
  116.      *
  117.      * @param $id_user adalah id user
  118.      * @param $id_task adalah id soal
  119.      * @see getCompletedTask
  120.      * @see query
  121.      *
  122.      * Untuk menambah tugas yang baru diselesaikan (UPDATE DATA)
  123.      *
  124.      */
  125.     function newTaskCompleted($id_user, $id_task){
  126.         if (!is_numeric($id_task) || !is_numeric($id_user)) {
  127.             return false;
  128.         }
  129.         elseif ($this->isTaskCompleted($id_user, $id_task)) {
  130.             return false;
  131.         }else{
  132.             $tasks = implode("|", $this->getCompletedTask($id_user))."|".$id_task;
  133.             return $this->query("UPDATE `users` SET `completed_task` = '{$tasks}' WHERE `id_user` = '{$id_user}';")->get();
  134.         }
  135.     }
  136.  
  137.     function isUserExistsbyUsername($username){
  138.         if (strlen($username) > 50) {
  139.             return false;
  140.         }
  141.         $username = $this->escape($username);
  142.         return $this->query("SELECT `id` FROM `users` WHERE `nick` = '{$username}';")->row();
  143.     }
  144.  
  145.     function isUserExistsbyId($id){
  146.         if (!is_numeric($id)) {
  147.             return false;
  148.         }
  149.         return $this->query("SELECT `id` FROM `users` WHERE `id` = '{$id}';")->row();
  150.     }
  151.  
  152.     function addNewUser($username, $password, $photo = null, $email = null, $website = null, $quotes = null, $github = null, $facebook = null){
  153.         if ($this->isUserExistsbyUsername($username)) {
  154.             return false;
  155.         } else {
  156.             $username = $this->escape($username, 1);
  157.             $email = $this->escape($email);
  158.             $website = $this->escape($website);
  159.             $quotes = $this->escape($quotes, 1);
  160.             $github = $this->escape($github);
  161.             $facebook = $this->escape($facebook);
  162.             $password = md5($password);
  163.             $query = "INSERT INTO `users` (`id`, `nick`, `url`, `usrname`, `password`, `foto`, `nilai`, `sudah`, `email`, `web`, `facebook`, `github`, `quotes`, `date`)
  164.             VALUES (NULL, '{$username}', '{$username}', 'ngetes', '{$password}', '{$photo}', '0', '0', '{$email}', '{$website}', '{$facebook}', '{$github}', '{$quotes}', now());";
  165.             return $this->query($query)->get();
  166.         }
  167.     }
  168.  
  169.     function uploadPhoto(array $var){
  170.         if (!isset($var["foto"])) {
  171.             return false;
  172.         }
  173.         elseif ($this->filterExtentsion($var['foto']['name'], array("jpg", "jpeg", "png"))){;
  174.             $path = "img/";
  175.             $nama_baru = round(microtime(true)) . '.' . $this->getExtension($var["foto"]["name"]);
  176.             if(move_uploaded_file($var["foto"]["tmp_name"], $path.$nama_baru)){
  177.                 return $nama_baru;
  178.             }else{
  179.                 return false;
  180.             }
  181.         }else{
  182.             return false;
  183.         }
  184.     }
  185.  
  186.     function filterExtentsion(string $file, array $whitelists){
  187.         return in_array($this->getExtension($file), $whitelists);
  188.     }
  189.  
  190.     function getExtension(string $file){
  191.         $exp = explode(".", $file);
  192.         return strtolower(end($exp));
  193.     }
  194.  
  195.     /**
  196.      *
  197.      * Untuk mereturn hasil query sebagai assoc
  198.      *
  199.      */
  200.     function fetch(){
  201.         return mysqli_fetch_assoc($this->get);
  202.     }
  203.  
  204.     /**
  205.      *
  206.      * Untuk mereturn object get
  207.      *
  208.      */
  209.     function get(){
  210.         return $this->get;
  211.     }
  212.  
  213.     function row(){
  214.         return (bool) $this->get->num_rows;
  215.     }
  216.  
  217.     function obj2array($val){
  218.         return (is_object($val) ? json_decode(json_encode($val), 1) : false);
  219.     }
  220.  
  221.     function __destruct(){
  222.         $this->close();
  223.     }
  224.  
  225. }
  226. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement