16, March 2010

access.class - did I do this right - webmaster forum

 
Webdigity webmaster forums
[ Home | Help | Search | Forum's Shop | Archive | Login | Register | Webmaster Directory ]
Webdigity Webmaster Forums  >  Web Development  >  PhP  >  Php User Class
Topic: access.class - did I do this right
« previous next »
Pages: [1] Print

Author Topic: access.class - did I do this right  (Read 892 times)
Metal slug addict
*
Posts: 18
140 credits
Members referred : 0


« on: Jul 04, 2008, 05:25:29 pm »

So I went and made my data base off the info in example 3 and have gpne back into the access.class and change the info. I am woundering if I did this right or if I have made the wrong changes. Thanks in advance for your help! Just came back to add that this is not my real database info. I made it up.
Code:
<?php
/**
 * PHP Class to user access (login, register, logout, etc)
 * 
 * <code><?php
 * include('access.class.php');
 * $user = new flexibleAccess();
 * ? ></code>
 * 
 * For support issues please refer to the webdigity forums :
 * http://www.webdigity.com/index.php/board,91.0.html
 * or the official web site:
 * http://phpUserClass.com/
 * ==============================================================================
 * 
 * @version $Id: access.class.php,v 0.93 2008/05/02 10:54:32 $
 * @copyright Copyright (c) 2007 Nick Papanotas (http://www.webdigity.com)
 * @author Nick Papanotas <nikolas@webdigity.com>
 * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL)
 * 
 * ==============================================================================

 */

/**
 * Flexible Access - The main class
 * 
 * @param string $dbName
 * @param string $dbHost 
 * @param string $dbUser
 * @param string $dbPass
 * @param string $dbTable
 */

class flexibleAccess{
  /*Settings*/
  /**
   * The database that we will use
   * var string
   */
  var $dbName 'db223';
  /**
   * The database host
   * var string
   */
  var $dbHost 'db79.perfora.net';
  /**
   * The database port
   * var int
   */
  var $dbPort 3306;
  /**
   * The database user
   * var string
   */
  var $dbUser 'db023';
  /**
   * The database password
   * var string
   */
  var $dbPass '9YUzxRfz';
  /**
   * The database table that holds all the information
   * var string
   */
  var $dbTable  'users';
  /**
   * The session variable ($_SESSION[$sessionVariable]) which will hold the data while the user is logged on
   * var string
   */
  var $sessionVariable 'userSessionValue';
  /**
   * Those are the fields that our table uses in order to fetch the needed data. The structure is 'fieldType' => 'fieldName'
   * var array
   */
  var $tbFields = array(
   'userID'=> 'userID'
   'login' => 'username',
   'pass'  => 'password',
   'email' => 'email',
   'active'=> 'active'
  );
/**
   * When user wants the system to remember him/her, how much time to keep the cookie? (seconds)
   * var int
   */
  var $remTime 2592000;//One month
  /**
   * The name of the cookie which we will use if user wants to be remembered by the system
   * var string
   */
  var $remCookieName 'ckSavePass';
  /**
   * The cookie domain
   * var string
   */
  var $remCookieDomain '';
  /**
   * The method used to encrypt the password. It can be sha1, md5 or nothing (no encryption)
   * var string
   */
  var $passMethod 'sha1';
  /**
   * Display errors? Set this to true if you are going to seek for help, or have troubles with the script
   * var bool
   */
  var $displayErrors true;
  /*Do not edit after this line*/
  var $userID;
  var $dbConn;
  var $userData=array();
  /**
   * Class Constructure
   * 
   * @param string $dbConn
   * @param array $settings
   * @return void
   */
  function flexibleAccess($dbConn ''$settings '')
  {
    if ( is_array($settings) ){
    foreach ( $settings as $k => $v ){
    if ( !isset( $this->{$k} ) ) die('Property '.$k.' does not exists. Check your settings.');
    $this->{$k} = $v;
}
    }
    $this->remCookieDomain $this->remCookieDomain == '' $_SERVER[register.php] : $this->remCookieDomain;
    $this->dbConn = ($dbConn=='')? mysql_connect($this->dbHost.':'.$this->dbPort$this->dbUser$this->dbPass):$dbConn;
    if ( !$this->dbConn ) die(mysql_error($this->dbConn));
    mysql_select_db($this->dbName$this->dbConn)or die(mysql_error($this->dbConn));
    if( !isset( $_SESSION ) ) session_start();
    if ( !empty($_SESSION[$this->sessionVariable]) )
    {
    $this->loadUser$_SESSION[$this->sessionVariable] );
    }
    //Maybe there is a cookie?
    if ( isset($_COOKIE[$this->remCookieName]) && !$this->is_loaded()){
      //echo 'I know you<br />';
      $u unserialize(base64_decode($_COOKIE[$this->remCookieName]));
      $this->login($u['uname'], $u['password']);
    }
  }
  
  
/**
   * Login function
   * @param string $uname
   * @param string $password
   * @param bool $loadUser
   * @return bool
  */
  function login($uname$password$remember false$loadUser true)
  {
     $uname    $this->escape($uname);
     $password $originalPassword $this->escape($password);
switch(strtolower($this->passMethod)){
  case 'sha1':
   $password "SHA1('$password')"; break;
  case 'md5' :
   $password "MD5('$password')";break;
  case 'nothing':
   $password "'$password'";
}
$res $this->query("SELECT * FROM `{$this->dbTable}` 
WHERE `{$this->tbFields['login']}` = '$uname' AND `{$this->tbFields['pass']}` = $password LIMIT 1"
,__LINE__);
if ( @mysql_num_rows($res) == 0)
return false;
if ( $loadUser )
{
$this->userData mysql_fetch_array($res);
$this->userID $this->userData[$this->tbFields['userID']];
$_SESSION[$this->sessionVariable] = $this->userID;
if ( $remember ){
  $cookie base64_encode(serialize(array('uname'=>$uname,'password'=>$originalPassword)));
  $a setcookie($this->remCookieName
  $cookie,time()+$this->remTime'/'$this->remCookieDomain);
}
}
return true;
  }
  
  
/**
   * Logout function
   * param string $redirectTo
   * @return bool
  */
  function logout($redirectTo '')
  {
    setcookie($this->remCookieName''time()-3600);
    $_SESSION[$this->sessionVariable] = '';
    $this->userData '';
    if ( $redirectTo != '' && !headers_sent()){
   header('Location: '.$redirectTo );
   exit;//To ensure security
}
  }
  /**
   * Function to determine if a property is true or false
   * param string $prop
   * @return bool
  */
  function is($prop){
   return $this->get_property($prop)==1?true:false;
  }
  
    
/**
   * Get a property of a user. You should give here the name of the field that you seek from the user table
   * @param string $property
   * @return string
  */
  function get_property($property)
  {
    if (empty($this->userID)) $this->error('No user is loaded'__LINE__);
    if (!isset($this->userData[$property])) $this->error('Unknown property <b>'.$property.'</b>'__LINE__);
    return $this->userData[$property];
  }
  /**
   * Is the user an active user?
   * @return bool
  */
  function is_active()
  {
    return $this->userData[$this->tbFields['active']];
  }
  
  
/**
   * Is the user loaded?
   * @ return bool
   */
  function is_loaded()
  {
    return empty($this->userID) ? false true;
  }
  /**
   * Activates the user account
   * @return bool
  */
  function activate()
  {
    if (empty($this->userID)) $this->error('No user is loaded'__LINE__);
    if ( $this->is_active()) $this->error('Allready active account'__LINE__);
    $res $this->query("UPDATE `{$this->dbTable}` SET {$this->tbFields['active']} = 1 
WHERE `{$this->tbFields['userID']}` = '"
.$this->escape($this->userID)."' LIMIT 1");
    if (@mysql_affected_rows() == 1)
{
$this->userData[$this->tbFields['active']] = true;
return true;
}
return false;
  }
  /*
   * Creates a user account. The array should have the form 'database field' => 'value'
   * @param array $data
   * return int
   */
  
  
function insertUser($data){
    if (!is_array($data)) $this->error('Data is not an array'__LINE__);
    switch(strtolower($this->passMethod)){
  case 'sha1':
   $password "SHA1('".$data[$this->tbFields['pass']]."')"; break;
  case 'md5' :
   $password "MD5('".$data[$this->tbFields['pass']]."')";break;
  case 'nothing':
   $password $data[$this->tbFields['pass']];
}
    foreach ($data as $k => $v $data[$k] = "'".$this->escape($v)."'";
    $data[$this->tbFields['pass']] = $password;
    $this->query("INSERT INTO `{$this->dbTable}` (`".implode('`, `'array_keys($data))."`) VALUES (".implode(", "$data).")");
    return (int)mysql_insert_id($this->dbConn);
  }
  /*
   * Creates a random password. You can use it to create a password or a hash for user activation
   * param int $length
   * param string $chrs
   * return string
   */
  function randomPass($length=10$chrs '1234567890qwertyuiopasdfghjklzxcvbnm'){
    for($i 0$i $length$i++) {
        $pwd .= $chrs{mt_rand(0strlen($chrs)-1)};
    }
    return $pwd;
  }
  ////////////////////////////////////////////
  // PRIVATE FUNCTIONS
  ////////////////////////////////////////////
  
  
/**
   * SQL query function
   * @access private
   * @param string $sql
   * @return string
  */
  function query($sql$line 'Uknown')
  {
    //if (defined('DEVELOPMENT_MODE') ) echo '<b>Query to execute: </b>'.$sql.'<br /><b>Line: </b>'.$line.'<br />';
$res mysql_db_query($this->dbName$sql$this->dbConn);
if ( !res )
$this->error(mysql_error($this->dbConn), $line);
return $res;
  }
  
  
/**
   * A function that is used to load one user's data
   * @access private
   * @param string $userID
   * @return bool
  */
  function loadUser($userID)
  {
$res $this->query("SELECT * FROM `{$this->dbTable}` WHERE `{$this->tbFields['userID']}` = '".$this->escape($userID)."' LIMIT 1");
    if ( mysql_num_rows($res) == )
     return false;
    $this->userData mysql_fetch_array($res);
    $this->userID $userID;
    $_SESSION[$this->sessionVariable] = $this->userID;
    return true;
  }

  /**
   * Produces the result of addslashes() with more safety
   * @access private
   * @param string $str
   * @return string
  */
  
  
function escape($str) {
    $str get_magic_quotes_gpc()?stripslashes($str):$str;
    $str mysql_real_escape_string($str$this->dbConn);
    return $str;
  }
  
  
/**
   * Error holder for the class
   * @access private
   * @param string $error
   * @param int $line
   * @param bool $die
   * @return bool
  */
  
  
function error($error$line ''$die false) {
    if ( $this->displayErrors )
     echo '<b>Error: </b>'.$error.'<br /><b>Line: </b>'.($line==''?'Unknown':$line).'<br />';
    if ($die) exit;
    return false;
  }
}
?>
« Last Edit: Jul 04, 2008, 05:31:52 pm by smurf »
Trackback URI for this entry : http://www.webdigity.com/trackback.php?topic=7822
Tags : Access.class user class Bookmark this thread : Digg Del.icio.us Dzone more....

Pages: [1] Print 
Webdigity Webmaster Forums  >  Web Development  >  PhP  >  Php User Class
Topic: access.class - did I do this right
« previous next »
Jump to:
User Area
Welcome, Guest. Please login or register.
Did you miss your activation email?
Mar 16, 2010, 12:23:17 pm





Login with username, password and session length

Donate to our community, and get a permanent link back to your site!

Donate to our community, and get a permanent link back to your site!





Readers

Web Design Gallery · Whois Lookup · Pagerank · Tag Browsing · Lo-fi version · Syndication · Webmaster forum history · Advertise
Developed by HumanWorks © 2005 - 2010 Webdigity webmaster community · sublime directory
Webdigity Webmaster Forums | Powered by SMF 1.0.12. © 2001-2005, Lewis Media. All Rights Reserved.