这套免费企业网站源码面向企业、工作室和机构官网建设,包含企业介绍、产品展示、新闻资讯、联系表单及后台管理功能,适合需要自行部署和二次开发的项目。源码获取入口设在本文的“源码获取”区域;下载后按下文配置数据库,即可用企业资料替换示例内容,并通过产品列表和客户留言接口完成前后台数据交互。
源码包内容与免费使用范围
压缩包按 PHP 与 MySQL 项目组织,主要文件包括前台页面、后台管理模块、数据库结构文件和接口示例。前台用于展示企业介绍、产品分类、新闻和联系方式;后台可新增或编辑产品、调整发布状态、维护新闻,并查看客户提交的咨询记录。产品只有设为“已发布”后才会出现在公开列表中,便于先审核资料再对外展示。
- 页面模板:首页、企业介绍、产品列表、产品详情、新闻列表和联系页面,替换企业名称、介绍文字、图片及联系方式即可用于基础展示。
- 管理功能:产品管理用于维护名称、分类、摘要和封面;新闻管理用于发布企业动态;留言管理用于查看联系人、电话和咨询内容。
- 接口示例:提供公开产品列表接口和客户留言提交接口,方便前台页面或其他业务系统按约定格式读取、写入数据。
该源码包按个人及企业自用、商业项目改造均可免费使用;不得将原始压缩包单独转售,也不应把未修改的源码冒充为原创作品。示例图片、字体或其他第三方素材应由使用者替换,或按相应素材许可使用;源码免费不代表第三方素材自动获得商用授权。
下载与部署:从压缩包到可访问的企业站
- 获取源码:在本文“源码获取”区域选择企业网站源码 ZIP 压缩包,保存到本地并解压。部署环境需要支持 PHP 和 MySQL,并能创建网站目录与数据库。
- 创建数据库:在数据库管理工具中新建空数据库,将源码包内的数据库结构文件导入。导入完成后应能看到产品、新闻和留言等业务表。
- 配置连接:打开项目的数据库配置文件,填写数据库地址、库名、用户名和密码。建议将配置文件限制为服务器端读取,避免把数据库凭据放进公开目录或前端代码。
- 替换企业资料:通过后台维护企业名称、产品、新闻和联系方式;将示例图片换成有使用权的企业图片。保存并发布一条产品后,检查前台列表是否显示对应名称、摘要和封面。
- 验证留言流程:从联系页面提交联系人、电话和咨询内容,再到后台留言管理中确认记录已保存。若没有记录,先检查数据库连接、表结构和服务器错误日志。
完成部署的判断标准是:前台能够显示已发布产品,后台修改后能看到更新结果,提交的咨询能够在后台查到。若项目需要接入企业现有 CRM 或小程序,可沿用下方接口字段和响应格式进行对接。
接口契约:产品读取与客户留言
接口统一返回 UTF-8 JSON。产品列表使用 GET /api/products.php?page=1&size=10,其中 page 从 1 开始,size 每次最多返回 30 条。响应中的 items 只包含已发布产品,字段包括产品编号、名称、摘要、封面路径和分类;total 表示符合条件的产品总数。
{
"code": 0,
"message": "ok",
"data": {
"items": [
{
"id": 12,
"title": "工业设备系列",
"summary": "适用于生产线配套",
"cover": "/uploads/product-12.jpg",
"category": "设备"
}
],
"page": 1,
"size": 10,
"total": 1
}
}
留言接口使用 POST /api/inquiries.php,请求头为 Content-Type: application/json。请求体接收 company_name、contact_name、phone 和 message;成功时返回 HTTP 201 和新留言编号。缺少必填项或电话格式不合要求时返回 HTTP 422,前端应显示接口返回的错误说明,而不是提示提交成功。
{
"company_name": "示例制造企业",
"contact_name": "李女士",
"phone": "13800000000",
"message": "咨询产品交付周期"
}
接口实现与联调检查
以下产品接口示例假定项目已通过配置文件创建好 PDO 连接对象 $pdo。SQL 使用预处理语句,并将分页参数限制为整数;同时查询总数,保证前端分页信息与实际结果一致。
<?php
header('Content-Type: application/json; charset=utf-8');
require __DIR__ . '/../config/pdo.php';
$page = max(1, (int)($_GET['page'] ?? 1));
$size = min(30, max(1, (int)($_GET['size'] ?? 10)));
$offset = ($page - 1) * $size;
$countStmt = $pdo->query(
"SELECT COUNT(*) FROM products WHERE status = 'published'"
);
$total = (int) $countStmt->fetchColumn();
$stmt = $pdo->prepare(
"SELECT id, title, summary, cover, category
FROM products
WHERE status = 'published'
ORDER BY id DESC
LIMIT :size OFFSET :offset"
);
$stmt->bindValue(':size', $size, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
echo json_encode([
'code' => 0,
'message' => 'ok',
'data' => [
'items' => $stmt->fetchAll(PDO::FETCH_ASSOC),
'page' => $page,
'size' => $size,
'total' => $total
]
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
留言接口应校验字段、限制长度,再用预处理语句入库。下面示例约定电话仅允许数字、空格、括号、加号和连字符,长度为 6 至 24 个字符;实际项目可按服务地区调整校验规则。
<?php
header('Content-Type: application/json; charset=utf-8');
require __DIR__ . '/../config/pdo.php';
$input = json_decode(file_get_contents('php://input'), true);
if (!is_array($input)) {
http_response_code(422);
echo json_encode(['code' => 422, 'message' => '请求体必须是 JSON']);
exit;
}
$company = trim((string)($input['company_name'] ?? ''));
$name = trim((string)($input['contact_name'] ?? ''));
$phone = trim((string)($input['phone'] ?? ''));
$message = trim((string)($input['message'] ?? ''));
if ($company === '' || $name === '' || $message === ''
|| !preg_match('/^{6,24}$/', $phone)) {
http_response_code(422);
echo json_encode(['code' => 422, 'message' => '请检查必填字段和电话格式']);
exit;
}
$stmt = $pdo->prepare(
'INSERT INTO inquiries
(company_name, contact_name, phone, message, created_at)
VALUES (:company, :name, :phone, :message, CURRENT_TIMESTAMP)'
);
$stmt->execute([
':company' => $company,
':name' => $name,
':phone' => $phone,
':message' => $message
]);
http_response_code(201);
echo json_encode([
'code' => 0,
'message' => '提交成功',
'data' => ['id' => (int)$pdo->lastInsertId()]
], JSON_UNESCAPED_UNICODE);
联调时先从后台发布一条测试产品,再调用产品列表接口,确认响应中的字段名称与前端读取方式一致;随后提交留言,确认成功响应包含编号,并在后台查到相同记录。正式部署还应限制留言接口的请求频率,对后台账号启用强密码,并避免把数据库错误详情直接返回给访客。
l3f4ecqmi2qk13wl5kn2y0rd0nns6t






