按照我说的做来创建一个前端界面和PHP后端代码,以及MySQL数据库结构。
首先,让我们创建前端界面:
```typescriptreact project="activation-code-system"
...
```
现在,让我们创建后端PHP文件:
1. config.php
```php
<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'your_username');
define('DB_PASS', 'your_password');
define('DB_NAME', 'activation_codes');
?>
```
2. db.php
```php
<?php
require_once 'config.php';
function db_connect() {
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
return $conn;
}
function db_query($sql) {
$conn = db_connect();
$result = $conn->query($sql);
$conn->close();
return $result;
}
function db_escape($value) {
$conn = db_connect();
$escaped = $conn->real_escape_string($value);
$conn->close();
return $escaped;
}
?>
```
3. check-code.php
```php
<?php
require_once 'db.php';
header('Content-Type: application/json');
$data = json_decode(file_get_contents('php://input'), true);
$code = db_escape($data['code']);
$sql = "SELECT * FROM activation_codes WHERE code = '$code'";
$result = db_query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
if ($row['is_used'] == 0) {
echo json_encode(['message' => '激活码有效,可以使用。']);
} else {
echo json_encode(['message' => '激活码已被使用。']);
}
} else {
echo json_encode(['message' => '无效的激活码。']);
}
?>
```
4. admin-login.php
```php
<?php
session_start();
header('Content-Type: application/json');
$data = json_decode(file_get_contents('php://input'), true);
$username = $data['username'];
$password = $data['password'];
if ($username === 'admin' && $password === 'admin') {
$_SESSION['admin_logged_in'] = true;
echo json_encode(['success' => true]);
} else {
echo json_encode(['success' => false]);
}
?>
```
5. admin-list-codes.php
```php
<?php
session_start();
require_once 'db.php';
header('Content-Type: application/json');
if (!isset($_SESSION['admin_logged_in']) || $_SESSION['admin_logged_in'] !== true) {
echo json_encode(['error' => 'Unauthorized']);
exit;
}
$sql = "SELECT * FROM activation_codes";
$result = db_query($sql);
$codes = [];
while ($row = $result->fetch_assoc()) {
$codes[] = $row;
}
echo json_encode(['codes' => $codes]);
?>
```
6. admin-add-code.php
```php
<?php
session_start();
require_once 'db.php';
header('Content-Type: application/json');
if (!isset($_SESSION['admin_logged_in']) || $_SESSION['admin_logged_in'] !== true) {
echo json_encode(['error' => 'Unauthorized']);
exit;
}
$data = json_decode(file_get_contents('php://input'), true);
$code = db_escape($data['code']);
$sql = "INSERT INTO activation_codes (code, is_used) VALUES ('$code', 0)";
db_query($sql);
echo json_encode(['success' => true]);
?>
```
7. admin-delete-code.php
```php
<?php
session_start();
require_once 'db.php';
header('Content-Type: application/json');
if (!isset($_SESSION['admin_logged_in']) || $_SESSION['admin_logged_in'] !== true) {
echo json_encode(['error' => 'Unauthorized']);
exit;
}
$data = json_decode(file_get_contents('php://input'), true);
$id = intval($data['id']);
$sql = "DELETE FROM activation_codes WHERE id = $id";
db_query($sql);
echo json_encode(['success' => true]);
?>
```
最后,创建数据库和表:
```sql
CREATE DATABASE activation_codes;
USE activation_codes;
CREATE TABLE activation_codes (
id INT AUTO_INCREMENT PRIMARY KEY,
code VARCHAR(50) UNIQUE NOT NULL,
is_used TINYINT(1) DEFAULT 0
);
```
设置说明:
1. 将所有PHP文件上传到您的Web服务器。
2. 在config.php中更新数据库连接信息。
3. 在您的MySQL数据库中执行上述SQL语句来创建数据库和表。
4. 将React项目构建并部署到您的Web服务器。
5. 配置您的Web服务器,将API请求路由到相应的PHP文件。
这个系统提供了以下功能:
- 前端查询页面:用户可以输入激活码并查询其有效性。
- 后台管理系统:管理员可以添加新的激活码、查看所有激活码、删除激活码。
请注意,这个系统使用了基本的安全措施,但在实际生产环境中,您可能需要添加更多的安全特性,如密码加密、更复杂的身份验证机制等。
如果您需要进一步的帮助或有任何问题,请随时询问小飞。