PHP登录与注册模块代码,PHP模块之登录与注册

1.前言

登录和注册模块,最重要的是对session和cookie的应用,一般来说,我们都是通过这个来进行用户是否登录判断的,下面我们简单的讲解和实现登录预注册模块。

详见OrdLogin.class.php

2.数据库的建立

名称

字段

字符

是否为空

是否为主键

备注

ID编号

id

int(11)

用户名

username

varchar(30)

用户密码

userpwd

varchar(32)

创建时间

createtime

int(11)

创建IP

createip

int(11)

快速建立SQL:

DROP DATABASE IF EXISTS userdb;

CREATE DATABASE userdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

USE userdb;

CREATE TABLE user(

id int(11) NOT NULL AUTO_INCREMENT,

username varchar(30) DEFAULT NULL,

userpwd varchar(32) DEFAULT NULL,

createtime int(11) NOT NULL,

createip int(11) DEFAULT NULL,

PRIMARY KEY (id)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

insert into user(username,userpwd) values('admin','admin');

3.MySQLi预处理语句总结

mysqli的预处理具有安全和效率高的特点,

3.1mysqli_prepare(mysqli $link,string $query)

功能:

MySQLi预处理语句编译SQL语句

参数:

link mysqli_connect()产生的mysqli对象

query 编译的SQL语句

返回:

mysqli_stmt 对象

3.2mysqli_stmt_bind_param(mysqli_stmt $stmt,string $type,mixed $var[,....])

功能:

绑定参数

参数:

stmt mysqli_prepare 产生的 mysqli_stmt 对象

type 参数的数据类型(i 整型,s 字符串,d 浮点型,b 数据类型)

var 具体变量,变量一定要以变量形式传递。

3.3mysqli_stmt_execute(mysqli_stmt $stmt)

功能:

执行编译好的SQL语句

参数:

stmt mysqli_prepare 产生的 mysqli_stmt 对象

返回:

布尔值

3.4mysqli_stmt_affected_rows(mysqli_stmt $stmt)

功能:

获取被影响的行数

参数:

stmt mysqli_prepare 产生的 mysqli_stmt 对象

返回:

成功返回被影响的行数。

失败返回-1

3.5mysqli_stmt_insert_id(mysqli_stmt $stmt)

功能:

获取最近一次insert产生的自增ID

参数:

stmt mysqli_prepare 产生的 mysqli_stmt 对象

返回:

自增id

3.6mysqli_stmt_bind_result(mysqli_stmt $stmt,mixed $var1[,...])

功能:

将返回的数据绑定到变量上

参数:

stmt mysqli_prepare 产生的 mysqli_stmt 对象

var1 返回的数据绑定到变量上

3.7mysqli_stmt_fetch(mysqli_stmt $stmt)

功能:

从结果集中获取数据

参数:

stmt mysqli_prepare 产生的 mysqli_stmt 对象

返回:

一次获取一行数据,拿不到时返回NULL

3.8mysqli_stmt_store_result(mysqli_stmt $stmt)

功能:

将获取的结果集缓存到客户端

参数:

stmt mysqli_prepare 产生的 mysqli_stmt 对象

3.9mysqli_stmt_num_rows(mysqli_stmt $stmt)

功能:

获取结果集中的行数

参数:

stmt mysqli_prepare 产生的 mysqli_stmt 对象

返回:

行数

3.10mysqli_stmt_close(mysqli_stmt $stmt)

功能:

释放mysqli_prepare产生的mysqli_stmt 对象

参数:

stmt mysqli_prepare 产生的 mysqli_stmt 对象

返回:

布尔值

4.代码展示

这里只展示预处理登录代码,其他代码就不多展示了,有兴趣可以查看项目库

/**

* 登录处理(预处理)

*/

public function preLogin()

{

$name = $_POST['username'];

$pwd = $_POST['password'];

$yzm = $_POST['yzm'];

if ($name == '') {

$data = ['code' => 'error', 'message' => '请输入用户名', 'data' => ''];

}else if ($pwd == '') {

$data = ['code' => 'error', 'message' => '请输入密码', 'data' => ''];

}else if ($yzm != $_SESSION['VCODE']) {

$data = ['code' => 'error', 'message' => '验证码不正确,请重新输入', 'data' => ''];

}else{

$sql_select = "select id,username,password from user where username= ?";

$stmt = mysqli_prepare($this->conn, $sql_select);

mysqli_stmt_bind_param($stmt, 's', $name);

mysqli_stmt_execute($stmt);

$result = mysqli_stmt_get_result($stmt);

$row = mysqli_fetch_assoc($result);

if ($row) {

if ($pwd != $row['password'] || $name != $row['username']) {

$data = ['code' => 'error', 'message' => '密码错误,请重新输入', 'data' => ''];

} else {

$_SESSION['username'] = $row['username'];

$_SESSION['id'] = $row['id'];

$data = ['code' => 'ok', 'message' => '成功登录', 'data' => ''];

}

} else {

$data = ['code' => 'error', 'message' => '您输入的用户名不存在', 'data' => ''];

}

}

return json_encode($data);

}

5.本文总结

登录与注册模块本质上并不难,主要是对用户输入信息的判断、对数据库数据获取的并与用户输入进行对比,而要长期保留用户登录的信息,则使用session保存,而要使用户下次登录免输入则使用cookie长期保存,而在此基础上,我们要注意的是MySQL的预处理、IP地址的获取、输入信息的处理等。

比如IP地址的处理:

// 把ip地址转换成整型

$ip_int=ip2long($_SERVER['REMOTE_ADDR']);

// 把整型转换成ip地址

$int_ip=long2ip($ip_int);

比如密码加密:

//密码使用md5()加密

$psw = md5(trim($_POST["userpwd"]));​​​​​​​

其他的一些模块和知识点,比如验证码模块、分页模块、文件上传模块、加密技术等,我会在其他文章详细解读。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值