dagon;10997119 wrote:well that's the question I have been answering from the beginning!
I appreciate that!, here is my user class below:
<?php
/**
* User Class
*
* @copyright 2010
* @version $Id: class_user.php, v2.00 2011-07-10 10:12:05 gewa Exp $
*/
if (!defined("_VALID_PHP"))
die('Direct access to this location is not allowed.');
class Users
{
private $uTable = "users";
public $logged_in = null;
public $uid = 0;
public $userid = 0;
public $username;
public $email;
public $name;
public $membership_id = 0;
public $userlevel;
private $lastlogin = "NOW()";
/**
* Users::__construct()
*
* @return
*/
function __construct()
{
$this->getUserId();
$this->startSession();
}
/**
* Users::getUserId()
*
* @return
*/
private function getUserId()
{
global $core;
if (isset($_GET['userid'])) {
$userid = (is_numeric($_GET['userid']) && $_GET['userid'] > -1) ? intval($_GET['userid']) : false;
$userid = sanitize($userid);
if ($userid == false) {
$core->error("You have selected an Invalid Userid","Users::getUserId()");
} else
return $this->userid = $userid;
}
}
/**
* Users::startSession()
*
* @return
*/
private function startSession()
{
session_start();
$this->logged_in = $this->loginCheck();
if (!$this->logged_in) {
$this->username = $_SESSION['username'] = "Guest";
$this->userlevel = 0;
}
}
/**
* Users::loginCheck()
*
* @return
*/
private function loginCheck()
{
if (isset($_SESSION['username']) && $_SESSION['username'] != "Guest") {
$row = $this->getUserInfo($_SESSION['username']);
$this->uid = $row['id'];
$this->username = $row['username'];
$this->email = $row['email'];
$this->name = $row['fname'].' '.$row['lname'];
$this->userlevel = $row['userlevel'];
$this->membership_id = $row['membership_id'];
return true;
} else {
return false;
}
}
/**
* Users::is_Admin()
*
* @return
*/
public function is_Admin()
{
return($this->userlevel == 9);
}
/**
* Users::login()
*
* @param mixed $username
* @param mixed $pass
* @return
*/
public function login($username, $pass)
{
global $db, $core;
if ($username == "" && $pass == "") {
$core->msgs['username'] = 'Please enter valid username and password.';
} else {
$status = $this->checkStatus($username, $pass);
switch ($status) {
case 0:
$core->msgs['username'] = 'Login and/or password did not match to the database.';
break;
case 1:
$core->msgs['username'] = 'Your account has been banned.';
break;
case 2:
$core->msgs['username'] = 'Your account it\'s not activated.';
break;
case 3:
$core->msgs['username'] = 'You need to verify your email address.';
break;
}
}
if (empty($core->msgs) && $status == 5) {
$row = $this->getUserInfo($username);
$this->uid = $_SESSION['userid'] = $row['id'];
$this->username = $_SESSION['username'] = $row['username'];
$this->email = $_SESSION['email'] = $row['email'];
$this->name = $_SESSION['userlevel'] = $row['userlevel'];
$this->userlevel = $_SESSION['userlevel'] = $row['userlevel'];
$this->membership_id = $_SESSION['membership_id'] = $row['membership_id'];
$data = array(
'lastlogin' => $this->lastlogin,
'lastip' => sanitize($_SERVER['REMOTE_ADDR'])
);
$db->update($this->uTable, $data, "username='" . $this->username . "'");
if(!$this->validateMembership()) {
$data = array(
'membership_id' => 0,
'mem_expire' => "0000-00-00 00:00:00"
);
$db->update($this->uTable, $data, "username='" . $this->username . "'");
}
return true;
} else
$core->msgStatus();
}
/**
* Users::logout()
*
* @return
*/
public function logout()
{
unset($_SESSION['username']);
unset($_SESSION['email']);
unset($_SESSION['name']);
unset($_SESSION['membership_id']);
unset($_SESSION['userid']);
session_destroy();
session_regenerate_id();
$this->logged_in = false;
$this->username = "Guest";
$this->userlevel = 0;
}
/**
* Users::getUserInfo()
*
* @param mixed $username
* @return
*/
private function getUserInfo($username)
{
global $db;
$username = sanitize($username);
$username = $db->escape($username);
$sql = "SELECT * FROM " . $this->uTable . " WHERE username = '" . $username . "'";
$row = $db->first($sql);
if (!$username)
return false;
return ($row) ? $row : 0;
}
/**
* Users::checkStatus()
*
* @param mixed $username
* @param mixed $pass
* @return
*/
public function checkStatus($username, $pass)
{
global $db;
$username = sanitize($username);
$username = $db->escape($username);
$pass = sanitize($pass);
$sql = "SELECT password, active FROM " . $this->uTable
. "\n WHERE username = '".$username."'";
$result = $db->query($sql);
if ($db->numrows($result) == 0)
return 0;
$row = $db->fetch($result);
$entered_pass = sha1($pass);
switch ($row['active']) {
case "b":
return 1;
break;
case "n":
return 2;
break;
case "t":
return 3;
break;
case "y" && $entered_pass == $row['password']:
return 5;
break;
}
}
/**
* Users::getUsers()
*
* @param bool $from
* @return
*/
public function getUsers($from = false)
{
global $db, $pager, $core;
require_once(BASEPATH . "lib/class_paginate.php");
$pager = new Paginator();
$counter = countEntries($this->uTable);
$pager->items_total = $counter;
$pager->default_ipp = $core->perpage;
$pager->paginate();
if ($counter == 0) {
$pager->limit = null;
}
if (isset($_GET['sort'])) {
list($sort, $order) = explode("-", $_GET['sort']);
$sort = sanitize($sort);
$order = sanitize($order);
if (in_array($sort, array("username", "fname", "lname", "email", "created"))) {
$ord = ($order == 'DESC') ? " DESC" : " ASC";
$sorting = " u." . $sort . $ord;
} else {
$sorting = " u.created DESC";
}
} else {
$sorting = " u.created DESC";
}
$clause = (isset($clause)) ? $clause : null;
if (isset($_POST['fromdate']) && $_POST['fromdate'] <> "" || isset($from) && $from != '') {
$enddate = date("Y-m-d");
$fromdate = (empty($from)) ? $_POST['fromdate'] : $from;
if (isset($_POST['enddate']) && $_POST['enddate'] <> "") {
$enddate = $_POST['enddate'];
}
$clause .= " WHERE u.created BETWEEN '" . trim($fromdate) . "' AND '" . trim($enddate) . " 23:59:59'";
}
$sql = "SELECT u.*, CONCAT(u.fname,' ',u.lname) as name, m.title, m.id as mid,"
. "\n DATE_FORMAT(u.created, '%d. %b. %Y.') as cdate,"
. "\n DATE_FORMAT(u.lastlogin, '%d. %b. %Y.') as adate"
. "\n FROM " . $this->uTable . " as u"
. "\n LEFT JOIN memberships as m ON m.id = u.membership_id"
. "\n " . $clause
. "\n ORDER BY " . $sorting . $pager->limit;
$row = $db->fetch_all($sql);
return ($row) ? $row : 0;
}