Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class User {
- private $_db,
- $_data,
- $_sessionName,
- $_cookieName,
- $_isLoggedIn;
- public function __construct($user = null) {
- $this->_db = DB::getInstance();
- $this->_sessionName = Config::get('session/session_name');
- $this->_cookieName = Config::get('remember/cookie_name');
- if(!$user) {
- if(Session::exists($this->_sessionName)) {
- $user = Session::get($this->_sessionName);
- if($this->find($user)) {
- $this->_isLoggedIn = true;
- } else {
- // process Logout
- }
- }
- } else {
- $this->find($user);
- }
- }
- public function create($fields = array()) {
- if(!$this->_db->insert('users', $fields)) {
- throw new Exception('There was a problem creating an account.');
- }
- }
- public function find($user = null) {
- if($user) {
- $field = (is_numeric($user)) ? 'id' : 'username';
- $data = $this->_db->get('users', array($field, '=', $user));
- if($data->count()) {
- $this->_data = $data->first();
- return true;
- }
- }
- return false;
- }
- public function login($username = null, $password = null, $remember = false) {
- $user = $this->find($username);
- if($user) {
- if($this->data()->password === Hash::make($password, $this->data()->salt)) {
- Session::put($this->_sessionName, $this->data()->id);
- if($remember) {
- $hash = Hash::unique();
- $hashCheck = $this->_db->get('users_session', array('user_id', '=', $this->data()->id));
- if(!$hashCheck->count()) {
- $this->_db->insert('users_session', array(
- 'user_id' => $this->data()->id,
- 'hash' => $hash
- ));
- } else {
- $hash = $hashCheck->first()->hash;
- }
- Cookie::put($this->_cookieName, $hash, Config::get('remember/cookie_expiry'));
- }
- return true;
- }
- }
- return false;
- }
- public function logout() {
- Session::delete($this->_sessionName);
- }
- public function data() {
- return $this->_data;
- }
- public function isLoggedIn() {
- return $this->_isLoggedIn;
- }
- }
- <?php
- session_start();
- $GLOBALS['config'] = array(
- 'mysql' => array(
- 'host' => 'localhost',
- 'username' => '\\\',
- 'password' => '///////',
- 'db' => 'users-pass'
- ),
- 'remember' => array(
- 'cookie_name' => 'hash',
- 'cookie_expiry' => 604800
- ),
- 'session' => array(
- 'session_name' => 'user',
- 'token_name' => 'token'
- )
- );
- spl_autoload_register(function($class) {
- require_once 'classes/' . $class . '.php';
- });
- require_once 'functions/sanitize.php';
- if(Cookie::exists(Config::get('remember/cookie_name')) && !Session::exists(Config::get('session/session_name'))) {
- echo 'User asked to be remembered';
- }
- <?php
- class Cookie {
- public static function exists($name) {
- return (isset($_COOKIE[$name])) ? true : false;
- }
- public static function get($name) {
- return $_COOKIE[$name];
- }
- public static function put($name, $value, $expiry) {
- if(setcookie($name, $value, time() + $expiry, '/')) {
- return true;
- }
- return false;
- }
- public static function delete($name) {
- self::put($name, '', time() -1);
- }
- }
- <?php
- class Hash {
- public static function make($string, $salt = '') {
- return hash('sha256', $string . $salt);
- }
- public static function salt($length) {
- #return mcrypt_create_iv($length);
- return substr(str_shuffle(str_repeat("0123456789abcdefghijklmnopqrstuvwxyz", $length)), 0, $length);
- }
- public static function unique() {
- return self::make(uniqid());
- }
- }
- <?php
- class DB {
- private static $_instance = null;
- private $_pdo,
- $_query,
- $_error =false,
- $_results,
- $_count = 0;
- private function __construct() {
- try {
- $this->_pdo = new PDO('mysql:host=' . Config::get('mysql/host') . ';dbname=' . Config::get('mysql/db'), Config::get('mysql/username'), Config::get('mysql/password'));
- } catch(PDOException $e) {
- die($e->getMessage());
- }
- }
- public static function getInstance() {
- if(!isset(self::$_instance)) {
- self::$_instance = new DB();
- }
- return self::$_instance;
- }
- public function query($sql, $params = array()) {
- $this->_error = false;
- if($this->_query = $this->_pdo->prepare($sql)) {
- $x = 1;
- if(count($params)) {
- foreach($params as $param) {
- $this->_query->bindValue($x, $param);
- $x++;
- }
- }
- if($this->_query->execute()) {
- $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
- $this->_count = $this->_query->rowCount();
- } else {
- $this->_error = true;
- }
- }
- return $this;
- }
- public function action($action, $table, $where = array()) {
- if(count($where) === 3) {
- $operators = array('=', '>', '<', '>=', '<=');
- $field =$where[0];
- $operator =$where[1];
- $value =$where[2];
- if(in_array($operator, $operators)) {
- $sql = "{$action} FROM {$table} WHERE {$field} {$operator} ?";
- if(!$this->query($sql, array($value))->error()) {
- return $this;
- }
- }
- }
- return false;
- }
- public function get($table, $where) {
- return $this->action('SELECT *', $table, $where);
- }
- public function delete($table, $where) {
- return $this->action('DELETE *', $table, $where);
- }
- public function insert($table, $fields = array()) {
- $keys = array_keys($fields);
- $values = '';
- $x = 1;
- foreach($fields as $field) {
- $values .='?';
- if($x < count($fields)) {
- $values .=', ';
- }
- $x++;
- }
- $sql= "INSERT INTO {$table} (`" . implode('`, `', $keys) . "`) VALUES ({$values})";
- if(!$this->query($sql, $fields)->error()) {
- return true;
- }
- return false;
- }
- public function update($table, $id, $fields) {
- $set = '';
- $x = 1;
- foreach($fields as $name => $value) {
- $set .= "{$name} = ?";
- if($x < count($fields)) {
- $set .= ', ';
- }
- $x++;
- }
- $sql = "UPDATE {$table} SET {$set} WHERE id = ($id)";
- if(!$this->query($sql, $fields)->error()) {
- return true;
- }
- return false;
- }
- public function results() {
- return $this->_results;
- }
- Public function first() {
- return $this->results()[0];
- }
- public function error() {
- return $this->_error;
- }
- public function count() {
- return $this->_count;
- }
- }
Add Comment
Please, Sign In to add comment