php实现人才系统
PHP实现人才系统的基本架构
使用PHP构建人才系统需要结合数据库、前端交互和后端逻辑。以下是一个基础实现方案:
数据库设计
创建MySQL数据库表存储人才信息,核心表结构如下:
CREATE TABLE candidates (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
phone VARCHAR(20),
skills TEXT,
experience INT,
education VARCHAR(100),
resume_path VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
核心功能实现
人才信息录入表单
<form action="add_candidate.php" method="post" enctype="multipart/form-data">
<input type="text" name="name" placeholder="姓名" required>
<input type="email" name="email" placeholder="邮箱" required>
<input type="tel" name="phone" placeholder="电话">
<textarea name="skills" placeholder="技能"></textarea>
<input type="number" name="experience" placeholder="工作经验(年)">
<input type="file" name="resume" accept=".pdf,.doc,.docx">
<button type="submit">提交</button>
</form>
数据处理脚本 (add_candidate.php)
<?php
$conn = new mysqli('localhost', 'username', 'password', 'talent_db');
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = $conn->real_escape_string($_POST['name']);
$email = $conn->real_escape_string($_POST['email']);
// 其他字段处理...
// 处理文件上传
$resumePath = '';
if (isset($_FILES['resume'])) {
$targetDir = "uploads/";
$fileName = basename($_FILES["resume"]["name"]);
$targetFile = $targetDir . uniqid() . '_' . $fileName;
move_uploaded_file($_FILES["resume"]["tmp_name"], $targetFile);
$resumePath = $targetFile;
}
$sql = "INSERT INTO candidates (name, email, phone, skills, experience, resume_path)
VALUES ('$name', '$email', '$phone', '$skills', $experience, '$resumePath')";
$conn->query($sql);
}
?>
人才检索功能
搜索界面
<form action="search.php" method="get">
<input type="text" name="keyword" placeholder="技能或姓名">
<select name="experience">
<option value="">所有经验</option>
<option value="1">1年以上</option>
<option value="3">3年以上</option>
</select>
<button type="submit">搜索</button>
</form>
搜索处理 (search.php)
<?php
$conn = new mysqli('localhost', 'username', 'password', 'talent_db');
$keyword = isset($_GET['keyword']) ? $conn->real_escape_string($_GET['keyword']) : '';
$exp = isset($_GET['experience']) ? (int)$_GET['experience'] : 0;
$sql = "SELECT * FROM candidates WHERE 1=1";
if (!empty($keyword)) {
$sql .= " AND (skills LIKE '%$keyword%' OR name LIKE '%$keyword%')";
}
if ($exp > 0) {
$sql .= " AND experience >= $exp";
}
$result = $conn->query($sql);
while ($row = $result->fetch_assoc()) {
echo "<div>{$row['name']} - {$row['skills']}</div>";
}
?>
安全增强措施
使用预处理语句防止SQL注入:
$stmt = $conn->prepare("INSERT INTO candidates (name, email) VALUES (?, ?)");
$stmt->bind_param("ss", $name, $email);
$stmt->execute();
文件上传安全处理:
$allowedTypes = ['application/pdf', 'application/msword'];
if (!in_array($_FILES['resume']['type'], $allowedTypes)) {
die('只允许上传PDF或Word文档');
}
扩展功能建议
- 添加用户认证系统区分管理员和普通用户
- 实现人才分类和标签系统
- 开发API接口供移动端调用
- 添加数据分析功能生成人才统计报表
- 集成邮件通知功能
系统可根据具体需求扩展更多功能模块,如面试安排、人才评估等。建议使用PHP框架如Laravel或CodeIgniter加速开发过程。







