Advertisement
Guest User

Untitled

a guest
Oct 27th, 2015
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.99 KB | None | 0 0
  1. <?php
  2. /*  Boring Stuff -- @Author Skyflare (Legendfoxy)
  3.     Inputs within "[]" brackets are not required.
  4.    
  5.       Database->__construct([host, db_username, db_password[, db_name]])
  6.       Database->setDB(db_name)
  7.       Database->insert('table_name', array('column_name' => 'value'[, *]));
  8.       Database->query('update `a` set `b`=:c where `d`=:f;', array('c' => 'stuffs', 'f' => 'more stuffs'));
  9.       Database->fetch_array({Database->query})
  10.       Database::hash('input', {''}[, ENGINE]);
  11.       Database::validate('input', Database::hash('input')[, ENGINE]);
  12.       Database::rand(length);
  13. */
  14.  
  15. class Database extends PDO
  16. {
  17.     static $debug = false;
  18.     public $conn  = false;
  19.    
  20.     public function __construct()
  21.     {
  22.         $args = func_get_args();
  23.        
  24.         if(count($args) >= 3)
  25.         {
  26.             try
  27.             {
  28.                 parent::__construct('mysql:host=' . $args[0], $args[1], $args[2]);
  29.                
  30.                 if(isset($args[3]))
  31.                 {
  32.                     if(!$this->setDB($args[3]))
  33.                     {
  34.                         Database::exception('Couldn\'t select database');
  35.                     }
  36.                 }
  37.             }
  38.             catch(PDOException $e)
  39.             {
  40.                 Database::exception('Error connecting to database.');
  41.             }
  42.         }
  43.     }
  44.    
  45.     public function setDB($dbname)
  46.     {
  47.         try
  48.         {
  49.             parent::exec('use `' . $dbname . '`;');
  50.             $test = parent::query('select database();');
  51.             $test = $test->fetch(self::FETCH_ASSOC);
  52.            
  53.             if(strtolower($test['database()']) != strtolower($dbname))
  54.             {
  55.                 throw new Exception;
  56.             }
  57.            
  58.             $this->conn = true;
  59.             return true;
  60.         }
  61.         catch(Exception $e)
  62.         {
  63.             // Do Nothing
  64.         }
  65.        
  66.         return false;
  67.     }
  68.    
  69.     public function insert($table, $values)
  70.     {
  71.         $query = "insert into `{$table}`(`" . implode("`, `", array_keys($values)) . "`) values(:" . implode(", :", array_keys($values)) . ");";
  72.         return $this->query($query, $values);
  73.     }
  74.    
  75.     public function insert_id()
  76.     { // because some people are just.. let's not go there.
  77.         return $this->lastInsertId();
  78.     }
  79.    
  80.     public function query($query, $bind = array())
  81.     {
  82.         try
  83.         {
  84.             $ps = parent::prepare($query);
  85.            
  86.             foreach($bind as $index => &$value)
  87.             {
  88.                 $ps->bindParam($index, $value);
  89.             }
  90.            
  91.             $ps->execute();
  92.             return $ps;
  93.         }
  94.         catch(PDOException $e)
  95.         {
  96.             if(Database::$debug)
  97.             {
  98.                 Database::exception($e->getMessage());
  99.             }
  100.         }
  101.        
  102.         return false;
  103.     }
  104.    
  105.     public function fetch_array($query, $bind = array(), $return = array())
  106.     {
  107.         $query = $this->query($query, $bind);
  108.        
  109.         if(method_exists($query, 'fetch'))
  110.         {
  111.             while($row = $query->fetch(self::FETCH_ASSOC))
  112.             {
  113.                 array_push($return, $row);
  114.             }
  115.         }
  116.        
  117.         return $return;
  118.     }
  119.    
  120.     static function encode($str)
  121.     {
  122.         $strE = $salt = rand(100, 128);
  123.         $strL = strlen($str);
  124.         for($i = 0; $i < $strL; $i++)
  125.         {
  126.             $strE .= '0x' . dechex(ord($str[$i]) + $salt);
  127.         }
  128.        
  129.         return $strE;
  130.     }
  131.    
  132.     static function decode($str)
  133.     {
  134.         $strE = '';
  135.         $strA = explode('0x', $str);
  136.         $salt = array_shift($strA);
  137.         foreach($strA as $u)
  138.         {
  139.             $strE .= chr(hexdec($u) - $salt);
  140.         }
  141.        
  142.         return $strE;
  143.     }
  144.    
  145.     static function hash($str, $rawsalt = '', $hash = 'sha512')
  146.     {
  147.         if($rawsalt == '')
  148.         {
  149.             $rawsalt = self::rand(((strlen($str) % 3) + 1) * 5);
  150.         }
  151.        
  152.         $loc = array(hash('sha1', $rawsalt), hash('sha1', $str), '');
  153.         foreach(str_split($loc[0], 1) as $index => $character)
  154.         {
  155.             $loc[2] .= $character . $loc[1][$index];
  156.         }
  157.        
  158.         $hash = hash($hash, $loc[2]);
  159.         return substr_replace($hash, $rawsalt, (strlen($str) << 2) % strlen($hash), 0);
  160.     }
  161.    
  162.     static function validate($str, $hash, $engine = 'sha512')
  163.     {
  164.         $salt = substr($hash, (strlen($str) << 2) % strlen(hash($engine, 1)), ((strlen($str) % 3) + 1) * 5);
  165.         return self::hash($str, $salt, $engine) === $hash ? true : false;
  166.     }
  167.    
  168.     static function rand($len = 32)
  169.     {
  170.         $chars = array_merge(range('a', 'z'), range('A', 'Z'), range('0', '9'));
  171.         for($rand = ''; strlen($rand) < $len; $rand .= $chars[rand(0, 61)]);
  172.         return $rand;
  173.     }
  174.    
  175.     static function exception($e = false)
  176.     {
  177.         if(Database::$debug && $e != false)
  178.         {
  179.             print $e;
  180.         }
  181.         //exit;
  182.     }
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement