`

PHP 用户登录实例

    博客分类:
  • PHP
 
阅读更多
create database PHPDemo01
use PHPDemo01
create table worx_user(
	user_id integer unsigned not null auto_increment,
	username varchar(20) not null,
	password char(40) not null,
	email_addr	varchar(100),
	is_acvtive      tinyint(1) default 0,
        primary key(user_id)
)
engine=myisam default character set latin1
collate latin1_general_cs auto_increment=0;

create table worx_pending(
	user_id integer unsigned not null,
	token char(10)	not null,
	create_date timestamp default current_timestamp,
        foreign key(user_id) references worx_user(user_id)
)
engine=myisam default character set latin1
collate latin1_general_cs;
 
<?php
define('IS_ENV_PRODUCTION',true);

error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', !IS_ENV_PRODUCTION);
ini_set('error_log' ,'log/phperror.txt');

date_default_timezone_set('America/New_York');

if(get_magic_quotes_gpc())
{
	function _stripslashes_rcurs($variable,$top = true)
	{
		$clean_data = array();
		foreach($variable as $key => $value)
		{
			$key = ($top)?$key : stripslashes($key);
			$clean_data[$key] = (is_array($value))? stripslashes_rcurs($value,false) : stripslashes($value);
		}
		return $clean_data;
	}
	$_GET = _stripslashes_rcurs($_GET);
	$_POST = _stripslashes_rcurs($_POST);
}
?>
 
<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', 'chenhailong');
define('DB_SCHEMA', 'PHPDemo01');
define('DB_TEL_PERFIX', 'WORX_');
if (!$GLOBALS['DB'] = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)) {
    die('Error :Unable to connect to database server.');
}
if (!mysql_select_db(DB_SCHEMA, $GLOBALS['DB'])) {
    mysql_close($CLOBALS['DB']);
    die('Error :Unable to select database schema.');
}
echo 'chenhailong '
?>
 
<?php
function random_text($count,$rm_similar = false)
{
	$chars = array_flip(array_merge(range(0,9),range('A','Z')));
	if($rm_similar)
	{
		unset($chars[0],$chars[1],$chars[2],$chars[5],$chars[8],$chars['B'],$chars['I'],$chars['O'],$chars['Q']
		,$chars['S'],$chars['U'],$chars['V'],$chars['Z']);
	}
	for($i = 0 , $text = '';$i<$count;$i++)
	{
		$text = array_rand($chars);
	}
	return $text;
}
?>
 
<?php
class User
{
    private $uid;
    private $fields;
    public function _construct()
    {
        $this->uid = null;
        $this->fields = array('username' => '', 'password' => '', 'emailAddr' => '',
            'isActive' => false);
    }
    public function _get($field)
    {
        if ($field == 'userId') {
            return $this->uid;
        } else {
            return $this->fields[$field];
        }
    }
    public function _set($field, $value)
    {
        if (array_key_exists($field, $this->fields)) {
            $this->fields[$field] = $value;
        }
    }
    public static function validateUserName($username)
    {
        return preg_match('/^[A-Z0-9]{2,20}$/i', $username);
    }
    public static function validateEmailAddr($email)
    {
        return filter_var($email, FILTER_VALIDATE_EMAIL);
    }
    public static function getById($user_id)
    {
        $user = new User();
        $query = sprintf('select username,password,email_addr,is_active' .
            'from %sUser where User_ID =%d', DB_TEL_PERFIX, $user_id);
        $result = mysql_query($query, $GLOBALS['DB']);
        if (mysql_num_rows($result)) {
            $row = mysql_fetch_assoc($result);
            $user->username = $row['USERNAME'];
            $user->password = $row['PASSWORD'];
            $user->emailAddr = $row['EMAIL_ADDR'];
            $user->isactive = $row['IS_ACTIVE'];
            $user->uid = $user_id;
        }
        mysql_free_result($result);
        return $user;
    }

    public static function getByUsername($username)
    {
        $user = new User();
        $query = sprintf('select user_id,password,email_addr,is_active' .
            'from %sUser where username = "$s"', DB_TEL_PERFIX, mysql_real_escape_string($username,
            $GLOBALS['DB']));
        $result = mysql_query($query, $GLOBALS['DB']);
        if (mysql_num_rows($result)) {
            $row = mysql_fetch_assoc($result);
            $user->username = $row['USERNAME'];
            $user->password = $row['PASSWORD'];
            $user->emailAddr = $row['EMAIL_ADDR'];
            $user->isactive = $row['IS_ACTIVE'];
            $user->uid = $user_id;
        }
        mysql_free_result($result);
        return $user;
    }
    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_TEL_PERFIX, 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);
            return mysql_query($query, $GLOBALS['DB']);
        } else {
            $query = sprintf('insert into %sUser (username,password,email_addr,is_active) values ("%s","%s","%s","%d")',
                DB_TEL_PERFIX, 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);
            if (mysql_query($query, $GLOBALS['DB'])) {
                $this->uid = mysql_insert_id($GLOBALS['DB']);
                return true;
            } else {
                return false;
            }

        }
    }

    public function setInactive()
    {
        $this->isActive = false;
        $this->save();

        $token = random_text(5);
        $query = sprintf('insert into %sPending (user_id,token) values (%d,"%s")',
            DB_TEL_PERFIX, $this - uid, $token);
        return (mysql_query($query, $GLOBALS['DB'])) ? $token : false;
    }
    public function setActive($token)
    {
        $query = sprintf('select token from %sPending where user_id = %d'.
                        'And token ="%s"',DB_TEL_PERFIX,$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);
        }
    }


}

?>
 
0
0
分享到:
评论

相关推荐

    PHP+Ajax网站开发典型实例

    实例52 用户登录校验 实例53 页面自动刷新时间 实例54 实现新闻滚动播放 第7章 实现高级Ajax技术 实例 55创建工具提示 实例 56读取响应首部 实例 57动态加载列表框 实例 58显示进度条 实例 59数据无刷新写入...

    PHP实例 用户登录注册

    自己刚学PHP,做了个用户登录、注册功能的例子,仅供参考,希望能给您带来帮助!

    PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例

    PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例 PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例 curl获取远程文件内容 GD显示中文 PHP GIF动画生成类 PHP HTML转UBB函数 PHP ...

    PHP+Ajax 无刷新登录及注册实例.rar

    PHP+Ajax 无刷新登录及注册实例,非常方便,界面友好

    PHP把实例化的class对象永久保存

    PHP把实例化的class对象存入session(session的值写入memcache),不必每次都创建类的实例 听起来有点绕口,其实就是: 1.不管你网站有多大,且有多少个class,用此方法之后每个类只需要实例化一次(除非你重启了服务器),听...

    PHP+Ajax网站开发典型实例-源代码

    第1章 PHP基础实例 实例1 构建PHP运行环境 ...实例52 用户登录校验 实例53 页面自动刷新时间 实例54 实现新闻滚动播放 第7章 实现高级Ajax技术 第8章 Ajax数据库操作 第9章 Ajax时尚技术 第10章 Ajax实现综合实例

    用户登录实例

    php简单的用户登录实例,可以看看吧,

    PHP开发用户登录系统实例.pdf

    PHP开发用户登录系统实例.pdf

    Android与PHP服务器交互用户登录与注册

    Android与PHP服务器交互用户登录与注册实例源码

    PHP经典实例

    在1996年发现PHP能够满足他编写Web编程需要的时候,他创建了PX,这是一个可以让PHP用户交换程序的场所。此外,他还是《Learning PHP5》(O’Reilly)和《Essential PHP Tools》(Apress)的作者。Adam’rrachtenberg...

    Cookie验证用户登录实例

    在网上找了好久都没有找到关于Cookie 验证的源代码实例,即是有多多少少都存在些问题。干脆自己来写一个了。我都测试N遍了都没有问题……  所有代码我都做了详细的注释,方便PHP新手看懂,也是为了能够进行二次开发...

    PHP实例开发源码-怎样使用支付宝账户登录ecshop插件.zip

    PHP实例开发源码—怎样使用支付宝账户登录ecshop插件.zip PHP实例开发源码—怎样使用支付宝账户登录ecshop插件.zip PHP实例开发源码—怎样使用支付宝账户登录ecshop插件.zip

    《PHP专业实例开发 》[PDF]

    每部分都围绕一个专业项目展开讨论,并通过实例引导读者,通过由浅入深的方式学习各种专业项目的创建,如创建用户注册表单、存储和检索文件信息、MySQL与PHP的综合使用、创建产品目录和购物车以及发送电子邮件、用户...

    PHP编程基础与实例教程(源码)

    HP简单易学且功能强大,是开发WEB应用程序理想的脚本语言。...本书由孔祥盛主编,内容丰富、讲解深入,适用于初、中级PHP用户,可以用做各类院校相关专业的教材,同时也是面向广大PHP爱好者的一本PHP实用参考书。

    php实现用户登陆简单实例

    php实现用户登陆简单实例 前言: 最近要完成的最后一个部分,就是对用户提交的数据进行管理,至于管理,那肯定就是管理员的事了,那一定涉及登陆,验证账号权限,账号是否过期等等问题。 所需知识 session,确实是很...

    php-mysql封装类实例.zip

    主要介绍了php mysql 封装类实例代码,数据库连接,数据库执行语句,可执行查询添加修改删除等任何sql语句,调试中使用,sql语句出错时会自动打印出来,将系统数据库与用户数据库分开,更直观的显示。

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例255 控制登录用户的过期时间 334 实例256 自动登录 335 实例257 单击登录 336 实例258 统计用户在线时间 339 实例259 限制用户访问网站的时间 340 实例260 用户来访时客户端创建COOKIE 341 实例261 删除客户端的...

    基于PHP MySQL的用户登录系统SQL注入实例及防范.pdf

    基于PHP MySQL的用户登录系统SQL注入实例及防范.pdf

    PHP4+网页编程实例解析.pdf

    介绍PHP基础和MYSQL数据库基础,按照从易到难的编排方式,详细介绍一系列PHP实例,包括计数器、相片集、用户系统、留言板、在线论坛、聊天室、网上投票和网上报名等

Global site tag (gtag.js) - Google Analytics