用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操作。希望本文的实例能够对读者在实际开发中提供一定的帮助。