用PHP编写注册登录系统并与数据库连接 (php注册登录 加数据库)

在现代互联网时代,登录注册系统作为Web应用程序的核心组件,扮演着重要的角色。防止未经授权的访问和数据泄露是登录注册系统的首要职责。PHP作为一种开源、快速、简单的脚本语言,与MySQL数据库完美结合,成为一种广泛使用的Web开发技术。本文将介绍如何使。

一、用户注册功能

1.1 数据库创建及表结构设计

使用MySQL数据库来存储用户信息,需要先创建相关的表结构。表名可以取名为user_info,具体的表字段包括:

– user_id:用户ID,自增长主键。

– user_name:用户名,用于登录及显示的名称。

– user_pwd:用户密码,存储密码哈希值。

– user_eml:用户邮箱,用于找回密码等功能。

– user_salt:用户盐值,增加密码的复杂度,可以使用随机字符串等方式生成。

下面是用户信息表的建表语句:

CREATE TABLE `user_info`(

`user_id` INT(11) NOT NULL AUTO_INCREMENT,

`user_name` VARCHAR(50) NOT NULL COMMENT ‘用户名’,

`user_pwd` VARCHAR(255) NOT NULL COMMENT ‘用户密码’,

`user_eml` VARCHAR(50) NOT NULL COMMENT ‘用户邮箱’,

`user_salt` VARCHAR(32) NOT NULL COMMENT ‘用户盐值’,

PRIMARY KEY (`user_id`)

) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT=’用户信息表’;

1.2 注册页面设计

注册页面是用户注册的入口,需要采用一定的设计和排版,以方便用户填写信息。在本例中,我们使用Bootstrap框架来构建基本结构,包括表单、输入项、提交按钮等。核心代码如下:

用户注册

用户注册

1.3 注册功能实现

在注册页面填写完信息,点击提交按钮后,需要将表单数据传输到服务器端,并将信息保存到数据库中。具体实现过程如下:

– 获取表单数据,包括用户名、密码、邮箱等信息。

– 对密码进行加盐哈希处理,把用户名和盐值也保存在数据库中。

– 如果注册成功,直接跳转到登录页面;如果注册失败,返回注册页面并给出相应的提示信息。

下面是register.php的代码,是服务器端与数据库连接的核心文件:

require_once ‘db_config.php’;

if($_SERVER[‘REQUEST_METHOD’] == ‘POST’) {

// 获取表单数据

$username = trim($_POST[‘username’]);

$eml = trim($_POST[’eml’]);

$password = trim($_POST[‘password’]);

$salt = md5(uniqid(rand()));

// 对密码进行哈希加盐

$hash = hash(‘sha256’, $password . $salt);

// 插入用户信息

$stmt = $pdo->prepare(“INSERT INTO user_info (user_name, user_pwd, user_eml, user_salt)

VALUES (:uname, :upwd, :ueml, :usalt)”);

$stmt->bindParam(‘:uname’, $username);

$stmt->bindParam(‘:upwd’, $hash);

$stmt->bindParam(‘:ueml’, $eml);

$stmt->bindParam(‘:usalt’, $salt);

if ($stmt->execute()) {

// 注册成功,跳转到登录页面

header(‘Location: login.php’);

exit();

} else {

// 注册失败,返回注册页面

echo “注册失败,请重新注册”;

}

}

?>

二、用户登录功能

2.1 登录页面设计

登录页面与注册页面类似,需要采用基本的设计和排版,以方便用户填写信息。在本例中,我们使用Bootstrap框架来构建基本结构,包括表单、输入项、提交按钮等。核心代码如下:

用户登录

用户登录

2.2 登录功能实现

在登录页面填写完信息,点击提交按钮后,需要将表单数据传输到服务器端,并根据数据库中的用户信息进行验证。具体实现过程如下:

– 获取表单数据,包括用户名、密码等信息。

– 查询数据库中是否存在用户名,如果存在,则获取对应的哈希密码和盐值。

– 对密码进行加盐哈希处理,并与数据库中的哈希值进行比较。

– 如果密码正确,则创建新的Session并将用户信息保存到Session中;否则返回登录页面并给出相应的提示信息。

下面是login.php的代码,是服务器端与数据库连接的核心文件:

require_once ‘db_config.php’;

// 开启Session

if (!isset($_SESSION)) {

session_start();

}

if($_SERVER[‘REQUEST_METHOD’] == ‘POST’) {

// 获取表单数据

$username = trim($_POST[‘username’]);

$password = trim($_POST[‘password’]);

// 查询用户信息

$stmt = $pdo->prepare(“SELECT user_id, user_name, user_pwd, user_salt FROM user_info WHERE user_name = :uname”);

$stmt->bindParam(‘:uname’, $username);

$stmt->execute();

$row = $stmt->fetch(PDO::FETCH_ASSOC);

if ($row) {

// 对密码进行哈希加盐

$hash = hash(‘sha256’, $password . $row[‘user_salt’]);

// 比较哈希值是否一致

if ($hash == $row[‘user_pwd’]) {

// 创建新的Session并保存用户信息

$_SESSION[‘user_id’] = $row[‘user_id’];

$_SESSION[‘user_name’] = $row[‘user_name’];

// 跳转到用户中心页面

header(‘Location: user.php’);

exit();

}

}

// 密码错误或用户名不存在,返回登录页面

echo “用户名或密码错误,请重新输入”;

}

?>

三、用户中心页面

在用户登录成功后,将自动跳转到用户中心页面。该页面可以展示用户基本信息、收藏、历史记录等,也可以提供修改密码、退出登录等功能。在本例中,我们只实现了展示用户基本信息的功能。

3.1 用户中心页面设计

用户中心页面需要展示用户基本信息,包括用户名、邮箱等。页面结构可以采用Bootstrap框架的栅格布局,也可以使用其他CSS样式库。核心代码如下:

用户中心

用户中心

用户名
邮箱

退出登录

3.2 用户中心页面实现

用户中心页面需要从Session中获取用户信息,以便展示在页面上。如果Session中不存在用户信息,则返回登录页面。具体实现思路如下:

– 从Session中获取用户信息,包括用户ID、用户名、邮箱等。

– 根据用户ID查询数据库中的用户信息,以获取完整的用户信息。

– 如果用户信息不存在,则返回登录页面。

– 如果用户信息存在,显示用户中心页面并展示用户信息。

下面是user.php的代码,根据Session中的用户ID,查询数据库中的用户信息,并将信息保存在Session中:

require_once ‘db_config.php’;

// 开启Session

if (!isset($_SESSION)) {

session_start();

}

// 获取用户信息

if (isset($_SESSION[‘user_id’])) {

$user_id = $_SESSION[‘user_id’];

$stmt = $pdo->prepare(“SELECT user_name, user_eml FROM user_info WHERE user_id = :uid”);

$stmt->bindParam(‘:uid’, $user_id);

$stmt->execute();

$row = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$row) {

// 用户信息不存在,返回登录页面

header(‘Location: login.php’);

exit();

}

// 保存用户信息到Session中

$_SESSION[‘user_name’] = $row[‘user_name’];

$_SESSION[‘user_eml’] = $row[‘user_eml’];

} else {

// 用户未登录,返回登录页面

header(‘Location: login.php’);

exit();

}

?>

四、连接数据库

在本文的实例中,我们采用PDO连接MySQL数据库,这是一种强大的抽象数据接口技术,可以与各种关系型数据库方便地集成。在db_config.php文件中,我们定义了连接数据库使用的用户名、密码、主机和端口等参数。核心代码如下:

// 数据库连接信息

$host = ‘localhost’;

$dbname = ‘test_db’;

$username = ‘root’;

$password = ‘123456’;

$port = ‘3306’;

$charset = ‘utf8mb4’;

// 连接数据库

$dsn = “mysql:host=$host;dbname=$dbname;port=$port;charset=$charset”;

$opt = [

PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // 错误异常抛出

PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // 默认获取关联数组

];

try {

$pdo = new PDO($dsn, $username, $password, $opt);

} catch(PDOException $e) {

die(‘数据库连接失败:’ . $e->getMessage());

}

?>

通过本文的学习,我们了解了如何使。注册登录系统是Web应用程序设计的基础组成部分,掌握这一基本知识对Web开发者来说至关重要。PHP作为一种流行的服务器端脚本语言,能够轻松地连接MySQL数据库,并实现对用户信息的CRUD操作。希望本文的实例能够对读者在实际开发中提供一定的帮助。


数据运维技术 » 用PHP编写注册登录系统并与数据库连接 (php注册登录 加数据库)