<?php
class User
{
private $uid; // user id
private $fields; // other record fields
// initialize a User object
public function __construct()
{
$this->uid = null;
$this->fields = array('username' => '',
'password' => '',
'emailAddr' => '',
'isActive' => false);
}
// override magic method to retrieve properties
public function __get($field)
{
if ($field == 'userId')
{
return $this->uid;
}
else
{
return $this->fields[$field];
}
}
// override magic method to set properties
public function __set($field, $value)
{
if (array_key_exists($field, $this->fields))
{
$this->fields[$field] = $value;
}
}
// return if username is valid format
public static function validateUsername($username)
{
return preg_match('/^[A-Z0-9]{2,20}$/i', $username);
}
// return if email address is valid format
public static function validateEmailAddr($email)
{
return filter_var($email, FILTER_VALIDATE_EMAIL);
}
// return an object populated based on the record's user id
public static function getById($uid)
{
$u = new User();
$query = sprintf('SELECT USERNAME, PASSWORD, EMAIL_ADDR, IS_ACTIVE ' .
'FROM %sUSER WHERE USER_ID = %d',
DB_TBL_PREFIX,
$uid);
$result = mysql_query($query, $GLOBALS['DB']);
if (mysql_num_rows($result))
{
$row = mysql_fetch_assoc($result);
$u->username = $row['USERNAME'];
$u->password = $row['PASSWORD'];
$u->emailAddr = $row['EMAIL_ADDR'];
$u->isActive = $row['IS_ACTIVE'];
$u->uid = $uid;
}
mysql_free_result($result);
return $u;
}
// return an object populated based on the record's username
public static function getByUsername($username)
{
$u = new User();
$query = sprintf('SELECT USER_ID, PASSWORD, EMAIL_ADDR, IS_ACTIVE ' .
'FROM %sUSER WHERE USERNAME = "%s"',
DB_TBL_PREFIX,
mysql_real_escape_string($username, $GLOBALS['DB']));
$result = mysql_query($query, $GLOBALS['DB']);
if (mysql_num_rows($result))
{
$row = mysql_fetch_assoc($result);
$u->username = $username;
$u->password = $row['PASSWORD'];
$u->emailAddr = $row['EMAIL_ADDR'];
$u->isActive = $row['IS_ACTIVE'];
$u->uid = $row['USER_ID'];
}
mysql_free_result($result);
return $u;
}
// save the record to the database
public function save()
{
if ($this->uid)
{
$query = sprintf('UPDATE %sUSER SET USERNAME = "%s", ' .
'PASSWORD = "%s", EMAIL_ADDR = "%s", IS_ACTIVE = %d ' .
'WHERE USER_ID = %d',
DB_TBL_PREFIX,
mysql_real_escape_string($this->username, $GLOBALS['DB']),
mysql_real_escape_string($this->password, $GLOBALS['DB']),
mysql_real_escape_string($this->emailAddr, $GLOBALS['DB']),
$this->isActive,
$this->userId);
mysql_query($query, $GLOBALS['DB']);
}
else
{
$query = sprintf('INSERT INTO %sUSER (USERNAME, PASSWORD, ' .
'EMAIL_ADDR, IS_ACTIVE) VALUES ("%s", "%s", "%s", %d)',
DB_TBL_PREFIX,
mysql_real_escape_string($this->username, $GLOBALS['DB']),
mysql_real_escape_string($this->password, $GLOBALS['DB']),
mysql_real_escape_string($this->emailAddr, $GLOBALS['DB']),
$this->isActive);
mysql_query($query, $GLOBALS['DB']);
$this->uid = mysql_insert_id($GLOBALS['DB']);
}
}
// set the record as inactive and return an activation token
public function setInactive()
{
$this->isActive = false;
$this->save(); // make sure the record is saved
$token = random_text(5);
$query = sprintf('INSERT INTO %sPENDING (USER_ID, TOKEN) ' .
'VALUES (%d, "%s")',
DB_TBL_PREFIX,
$this->uid,
$token);
mysql_query($query, $GLOBALS['DB']);
return $token;
}
// clear the user's pending status and set the record as active
public function setActive($token)
{
$query = sprintf('SELECT TOKEN FROM %sPENDING WHERE USER_ID = %d ' .
'AND TOKEN = "%s"',
DB_TBL_PREFIX,
$this->uid,
mysql_real_escape_string($token, $GLOBALS['DB']));
$result = mysql_query($query, $GLOBALS['DB']);
if (!mysql_num_rows($result))
{
mysql_free_result($result);
return false;
}
else
{
mysql_free_result($result);
$query = sprintf('DELETE FROM %sPENDING WHERE USER_ID = %d ' .
'AND TOKEN = "%s"', DB_TBL_PREFIX,
$this->uid,
mysql_real_escape_string($token, $GLOBALS['DB']));
mysql_query($query, $GLOBALS['DB']);
$this->isActive = true;
$this->save();
return true;
}
}
}
?>
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
192429_ch01_code.zip (15个子文件)
ch_01
templates
template-page.php 838B
sql
tables.sql 772B
public_files
register.php 4KB
main.php 2KB
js
401.js 365B
css
styles.css 282B
verify.php 1KB
login.php 2KB
401.php 1KB
forgotpass.php 2KB
img
captcha.php 1KB
lib
User.php 5KB
functions.php 677B
db.php 541B
common.php 1016B
共 15 条
- 1
azuwind
- 粉丝: 1
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页