PengBo
发布于 2025-05-11 / 4 阅读
0
0

一个简单的php网站即时聊天源码

以下是一个非常简单的 PHP 即时聊天页面示例,使用了 PHP、MySQL 和 Ajax 技术。该示例支持用户注册、登录、发送和接收公共消息,界面简洁,适合快速部署和学习。

---

## 🛠 技术栈

* 前端:HTML、CSS、jQuery

* 后端:PHP

* 数据库:MySQL([webslesson.info][1])

---

## 📁 文件结构

```

chat-app/

├── assets/

│ └── style.css

├── db.php

├── index.php

├── login.php

├── register.php

├── chat.php

└── send_message.php

```

---

## 🧱 数据库结构

首先,在 MySQL 中创建一个数据库 chat_db,并执行以下 SQL 语句:

```sql

CREATE TABLE users (

id INT AUTO_INCREMENT PRIMARY KEY,

username VARCHAR(50) NOT NULL,

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)

);

```

---

## 📄 核心文件内容

### db.php

用于连接数据库:([sourcecodester.com][2])

```php

<?php

$host = 'localhost';

$dbname = 'chat_db';

$username = 'root';

$password = '';

try {

$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch (PDOException $e) {

die("Connection failed: " . $e->getMessage());

}

?>

```

### index.php

主页,显示聊天消息和发送表单:([trinitytuts.com][3])

```php

<?php

session_start();

if (!isset($_SESSION['user_id'])) {

header('Location: login.php');

exit();

}

require 'db.php';

$stmt = $pdo->query("SELECT messages.id, users.username, messages.message, messages.timestamp

FROM messages

JOIN users ON messages.user_id = users.id

ORDER BY messages.timestamp DESC LIMIT 10");

$messages = $stmt->fetchAll(PDO::FETCH_ASSOC);

?>

<!DOCTYPE html>

<html lang="zh-CN">

<head>

<meta charset="UTF-8">

<title>聊天应用</title>

<link rel="stylesheet" href="assets/style.css">

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

</head>

<body>

<div class="chat-container">

<h2>欢迎,<?php echo htmlspecialchars($_SESSION['username']); ?>!</h2>

<div id="messages">

<?php foreach ($messages as $message): ?>

<div class="message">

<strong><?php echo htmlspecialchars($message['username']); ?>:</strong>

<p><?php echo nl2br(htmlspecialchars($message['message'])); ?></p>

<span class="timestamp"><?php echo $message['timestamp']; ?></span>

</div>

<?php endforeach; ?>

</div>

<form id="messageForm">

<textarea id="message" placeholder="输入消息..." required></textarea>

<button type="submit">发送</button>

</form>

</div>

<script>

$(document).ready(function() {

$('#messageForm').submit(function(e) {

e.preventDefault();

var message = $('#message').val();

$.post('send_message.php', { message: message }, function(response) {

if (response.success) {

$('#messages').prepend(

'<div class="message"><strong>你:</strong><p>' + message + '</p><span class="timestamp">刚刚</span></div>'

);

$('#message').val('');

} else {

alert('发送失败,请稍后再试。');

}

}, 'json');

});

});

</script>

</body>

</html>

```

### send_message.php

处理消息发送:([Pakainfo][4])

```php

<?php

session_start();

if (!isset($_SESSION['user_id'])) {

echo json_encode(['success' => false]);

exit();

}

require 'db.php';

if (isset($_POST['message'])) {

$stmt = $pdo->prepare("INSERT INTO messages (user_id, message) VALUES (?, ?)");

$stmt->execute([$_SESSION['user_id'], $_POST['message']]);

echo json_encode(['success' => true]);

} else {

echo json_encode(['success' => false]);

}

?>

```

---

## 🎨 样式示例

### assets/style.css

简单的样式:([trinitytuts.com][3])

```css

body {

font-family: Arial, sans-serif;

background-color: #f4f4f4;

margin: 0;

padding: 0;

}

.chat-container {

width: 80%;

max-width: 600px;

margin: 20px auto;

background-color: #fff;

padding: 20px;

border-radius: 8px;

box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);

}

#messages {

max-height: 400px;

overflow-y: auto;

margin-bottom: 20px;

}

.message {

margin-bottom: 10px;

}

.message strong {

color: #333;

}

.message p {

margin: 5px 0;

}

.timestamp {

font-size: 0.8em;

color: #888;

}

#messageForm {

display: flex;

flex-direction: column;

}

#message {

width: 100%;

padding: 10px;

margin-bottom: 10px;

border: 1px solid #ccc;

border-radius: 4px;

resize: vertical;

}

button {

padding: 10px;

background-color: #5cb85c;

color: white;

border: none;

border-radius: 4px;

cursor: pointer;

}

button:hover {

background-color: #4cae4c;

}

```

---

## 🚀 部署步骤

1. 将上述文件上传到服务器。

2. 在数据库中创建 chat_db,并执行上述 SQL 语句。

3. 确保服务器支持 PHP 和 MySQL。

4. 访问 index.php,即可开始使用聊天应用。

---

如果希望实现更复杂的功能,如私聊、实时消息推送(使用 WebSocket)、用户身份验证等,建议参考以下资源:

* [PHP Chat Application using WebSocket](https://www.webslesson.info/2021/01/build-real-time-chat-application-in-php-mysql-using-websocket.html?m=1)

* [Simple Chat System in PHP with Source Code](https://code-projects.org/simple-chat-system/)

[1]: https://www.webslesson.info/2021/01/build-real-time-chat-application-in-php-mysql-using-websocket.html?m=1&utm_source=chatgpt.com "Build Real time Chat Application in PHP Mysql using WebSocket | Webslesson"

[2]: https://www.sourcecodester.com/php/12295/simple-public-chat-room-using-php.html?utm_source=chatgpt.com "Simple Public Chat Room Using PHP/MySQLi with Source Code | SourceCodester"

[3]: https://trinitytuts.com/simple-chat-application-php-ajax-mysql/?utm_source=chatgpt.com "Simple Chat application with php, ajax and MySql - Trinity tuts"

[4]: https://www.pakainfo.com/php-chat-code-in-php-with-demo-chat-in-php-with-example-script/?utm_source=chatgpt.com "PHP Chat Code In Php With Demo – Chat In PHP With Example Script - Pakainfo"


评论