sql
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL
);
CREATE TABLE messages (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
message TEXT NOT NULL,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);
try {
$pdo = new PDO(mysql:host=$host;dbname=$dbname, $username, $password);
$pdo-setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die(Could not connect to the database $dbname : 、$e-getMessage());
}
function registerUser($username, $password) {
global $pdo;
$stmt = $pdo-prepare(INSERT INTO users (username, password) VALUES (:username, :password));
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
$stmt-bindParam(':username', $username);
$stmt-bindParam(':password', $hashed_password);
return $stmt-execute();
}
function loginUser($username, $password) {
global $pdo;
$stmt = $pdo-prepare(SELECT * FROM users WHERE username = :username);
$stmt-bindParam(':username', $username);
$stmt-execute();
$user = $stmt-fetch(PDO::FETCH_ASSOC);
if ($user && password_verify($password, $user['password'])) {
return true;
}
return false;
}
?
3、发送和接收消息
接下来,实现发送和接收消息的功能:
php
function sendMessage($userId, $message) {
global $pdo;
$stmt = $pdo-prepare(INSERT INTO messages (user_id, message) VALUES (:user_id, :message));
$stmt-bindParam(':user_id', $userId);
$stmt-bindParam(':message', $message);
return $stmt-execute();
}
function getMessages() {
global $pdo;
$stmt = $pdo-query(SELECT m.message, u.username, m.timestamp FROM messages m JOIN users u ON m.user_id = u.id ORDER BY m.timestamp ASC);
return $stmt-fetchAll(PDO::FETCH_ASSOC);
}
?