PHP+MySQL+Ajax实现注册功能

本文使用原生PHP和mysql数据库,使用jquery的ajax实现注册功能。

注册页面

注册页面由,html表

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>用户注册页面</title>
    <style>
		.container {
     
		    width: 300px;
		    margin: auto;
		    padding: 20px;
		    border: 1px solid #ccc;
		    border-radius: 5px;
		}

		input[type="text"], input[type="email"], input[type="password"] {
     
		    width: 100%;
		    padding: 12px 20px;
		    margin: 8px 0;
		    display: inline-block;
		    border: 1px solid #ccc;
		    box-sizing: border-box;
		}

		button {
     
		    background-color: #4CAF50;
		    color: white;
		    padding: 14px 20px;
		    margin: 8px 0;
		    border: none;
		    cursor: pointer;
		    width: 100%;
		    border-radius: 5px;
		}

		button:hover {
     
		    opacity: 0.8;
		}

		#message {
     
		    color: red;
		}
    </style>
    <script src="jquery.min.js"></script>
</head>
<body>
    <div class="container">
        <h2>用户注册</h2>
        <form id="registerForm">
            <label for="username">用户名:</label>
            <input type="text" id="username" name="username" required>
            <br>
            <label for="email">邮箱:</label>
            <input type="email" id="email" name="email" required>
            <br>
            <label for="password">密码:</label>
            <input type="password" id="password" name="password" required>
            <br>
            <button type="submit">注册</button>
        </form>
        <p id="message"></p>
    </div>
    <script>
		document.getElementById('registerForm').addEventListener('submit', function(event) {
     
		    event.preventDefault();
		    
		    var username = document.getElementById('username').value;
		    var email = document.getElementById('email').value;
		    var password = document.getElementById('password').value;

		    if (!validateUsername(username) || !validateEmail(email) || !validatePassword(password)) {
     
		        document.getElementById('message').innerText = '请检查您的输入信息是否正确';
		        return;
		    }
		    
		    // 这里可以添加发送请求到服务器进行实际的注册操作
		    $.ajax({
     
		        url: 'register.php',
		        method: 'POST',
		        data: {
     username: username, password: password, email: email},
		        dataType: 'json',
		        success: function(response) {
     
		            if(response.status == 'success') {
     
		                alert('注册成功');
		                // 处理请求成功后的操作
        				//window.location.href = "yourRedirectUrl"; // 页面跳转到需要的 URL
		            } else {
     
		                alert('注册失败:' + response.message);
		            }
		        },
		        error: function(xhr, status, error) {
     
		            console.log('Error: ' + xhr.responseText);
		        }
		    });
		    // 模拟注册成功后的提示
		    // document.getElementById('message').innerText = '注册成功!';

		    // 清空表单
		    this.reset();
		});

		function validateUsername(username) {
     
		    // 实际中应包含更复杂的验证逻辑,这里仅作简单示例
		    return username.length > 0;
		}

		function validateEmail(email) {
     
		    // 使用正则表达式进行邮箱格式验证
		    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
		    return re.test(email);
		}

		function validatePassword(password) {
     
		    // 实际中应包含更复杂的验证逻辑,比如长度、特殊字符等,这里仅作简单示例
		    return password.length > 0;
		}
    </script>
</body>
</html>

创建数据库sql

创建数据库

CREATE DATABASE db100;

创建数据表

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(255) DEFAULT NULL,
  `regtime` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

数据库连接文件

<?php 
// 连接数据库
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "db100";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
   
    die("Connection failed: " . $conn->connect_error);
}
 ?>

注册PHP文件

<?php

include 'conn.php';
// 获取前端传来的数据
$username = $_POST['username'];
// $password = password_hash($_POST['password'], PASSWORD_DEFAULT); // 对密码进行哈希加密
$password = $_POST['password'];
$email = $_POST['email'];

// 验证输入并尝试插入数据
$sql = "INSERT INTO user (username, password, email)
VALUES (?, ?, ?)";

$stmt = $conn->prepare($sql);
$stmt->bind_param("sss", $username, $password, $email);

if ($stmt->execute()) {
   
    echo json_encode(array('status' => 'success'));
} else {
   
    echo json_encode(array('status' => 'error', 'message' => '注册失败,请检查您的输入或稍后再试.'));
}

$stmt->close();
$conn->close();
?>

相关推荐

  1. PHP+MySQL+Ajax实现注册功能

    2024-01-08 06:10:02       62 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-08 06:10:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-08 06:10:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-08 06:10:02       82 阅读
  4. Python语言-面向对象

    2024-01-08 06:10:02       91 阅读

热门阅读

  1. 蓝桥杯基础知识1 字母大小写转换

    2024-01-08 06:10:02       76 阅读
  2. gin使用jwt登录验证

    2024-01-08 06:10:02       64 阅读
  3. 第28关 k8s监控实战之Prometheus(四)

    2024-01-08 06:10:02       63 阅读
  4. K8S---通过curl访问api

    2024-01-08 06:10:02       46 阅读
  5. 华为HCIE课堂笔记第十三章 IPv6地址配置

    2024-01-08 06:10:02       48 阅读
  6. 基于单片机的智能电子秤控制系统的设计与实现

    2024-01-08 06:10:02       65 阅读
  7. 网络通信(7)-TCP协议解析

    2024-01-08 06:10:02       51 阅读
  8. Linux中手动引导启动和密码破解

    2024-01-08 06:10:02       57 阅读