141 lines
4.0 KiB
JavaScript
141 lines
4.0 KiB
JavaScript
// index.js
|
|
const express = require('express');
|
|
const mysql = require('mysql2');
|
|
const app = express();
|
|
const port = 3000;
|
|
const cors = require('cors');
|
|
|
|
// 创建 MySQL 数据库连接
|
|
const db = mysql.createConnection({
|
|
host: 'localhost',
|
|
user: 'root',
|
|
password: '123456',
|
|
database: 'express_db'
|
|
});
|
|
|
|
// 连接到 MySQL 数据库
|
|
db.connect((err) => {
|
|
if (err) {
|
|
console.error('Error connecting to MySQL database:', err);
|
|
return;
|
|
}
|
|
console.log('Connected to MySQL database');
|
|
});
|
|
|
|
// 设置 Express 应用的 JSON 和urlencoded中间件
|
|
app.use(express.json());
|
|
app.use(express.urlencoded({ extended: true }));
|
|
app.use(cors());
|
|
|
|
app.set('view engine', 'ejs');
|
|
app.set('views', './public');
|
|
|
|
|
|
app.get('/register-page', (req, res) => {
|
|
res.render('register');
|
|
})
|
|
|
|
// 处理表单提交的路由
|
|
app.post('/register', (req, res) => {
|
|
const { username, password, email, gender, hobbies, city, description } = req.body;
|
|
|
|
let hobbiesStr = '';
|
|
if (Array.isArray(hobbies)) {
|
|
hobbiesStr = hobbies.join(',');
|
|
} else if (hobbies) {
|
|
hobbiesStr = hobbies;
|
|
}
|
|
|
|
// 构建插入数据的 SQL 语句
|
|
const sql = 'INSERT INTO users (username, password, email, gender, hobbies, city, description) VALUES (?, ?, ?, ?, ?, ?, ?)';
|
|
const values = [username, password, email, gender, hobbiesStr, city, description];
|
|
|
|
// 执行 SQL 语句
|
|
db.query(sql, values, (err, result) => {
|
|
if (err) {
|
|
console.error('Error inserting data into MySQL database:', err);
|
|
res.status(500).send('Error inserting data into MySQL database');
|
|
return;
|
|
}
|
|
console.log('Data inserted successfully');
|
|
res.send('Registration successful');
|
|
});
|
|
});
|
|
|
|
|
|
app.get('/login-page', (req, res) => {
|
|
res.render('login');
|
|
});
|
|
|
|
// 处理登录表单提交
|
|
app.post('/login', (req, res) => {
|
|
const { username, password } = req.body;
|
|
|
|
// 构建查询用户的 SQL 语句
|
|
const sql = 'SELECT * FROM users WHERE username = ? AND password = ?';
|
|
const values = [username, password];
|
|
|
|
// 执行 SQL 语句
|
|
db.query(sql, values, (err, results) => {
|
|
if (err) {
|
|
console.error('Error querying the database:', err);
|
|
return;
|
|
}
|
|
|
|
if (results.length > 0) {
|
|
console.log('Login successful');
|
|
res.render('login', { message: '登录成功!' });
|
|
} else {
|
|
console.log('Login failed');
|
|
res.render('login', { message: '用户名或密码错误' });
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
|
|
app.get('/update-password-page', (req, res) => {
|
|
res.render('update-password');
|
|
})
|
|
|
|
// 处理更新用户密码的路由
|
|
app.post('/update-password', (req, res) => {
|
|
const { username, currentPassword, newPassword } = req.body;
|
|
|
|
// 验证当前密码是否正确
|
|
const sqlCheck = 'SELECT * FROM users WHERE username = ? AND password = ?';
|
|
const checkValues = [username, currentPassword];
|
|
|
|
db.query(sqlCheck, checkValues, (err, results) => {
|
|
if (err) {
|
|
console.error('Error querying the database:', err);
|
|
res.status(500).send('Error querying the database');
|
|
return;
|
|
}
|
|
|
|
if (results.length === 0) {
|
|
console.log('当前密码输入错误');
|
|
res.status(400).send('Current password is incorrect');
|
|
return;
|
|
}
|
|
|
|
// 当前密码正确,更新新密码
|
|
const sqlUpdate = 'UPDATE users SET password = ? WHERE username = ?';
|
|
const updateValues = [newPassword, username];
|
|
|
|
db.query(sqlUpdate, updateValues, (err, result) => {
|
|
if (err) {
|
|
console.error('Error updating user password:', err);
|
|
res.status(500).send('Error updating user password');
|
|
return;
|
|
}
|
|
console.log('User password updated successfully');
|
|
res.send('User password updated successfully');
|
|
});
|
|
});
|
|
});
|
|
|
|
// 启动服务器
|
|
app.listen(port, () => {
|
|
console.log(`Server is running on http://localhost:${port}`);
|
|
}); |