# sptzkf **Repository Path**: caodaimin/sptzkf ## Basic Information - **Project Name**: sptzkf - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-18 - **Last Updated**: 2026-07-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 商品通知群 一套兼容 PHP 8.0 / MySQL 5.7 的多租户商品通知系统。平台管理员为客户开通独立账号;客户在后台发布文字和图片;第三方网站粘贴一行 ` ``` 建议放在第三方网站的 `` 之前。如果对方网站配置了 CSP,需要允许通知系统域名: ```text script-src ... https://notify.example.com; frame-src ... https://notify.example.com; ``` 当前版本按产品约定不限制安装域名,通知内容应视为公开信息。不要在通知中发布内部资料、个人敏感信息或仅限会员查看的内容。 ## 公开接口 - `api/widget-init.php`:组件配置、最新 20 条消息、未读数和当前游标。 - `api/widget-history.php`:使用 `before_id` 向前分页。 - `api/widget-changes.php`:使用 `after_cursor` 拉取新增、修改和删除事件。 接口只接受租户公开标识,不输出账号、内部租户 ID 或服务器真实文件路径。后台接口全部使用 Session、CSRF 和租户归属检查。 ## 验证 不连接数据库的基础安全与图片处理检查: ```powershell php tests\run.php ``` 语法检查: ```powershell Get-ChildItem -Recurse -Filter *.php | ForEach-Object { php -l $_.FullName } ``` 完整验收需要先配置测试数据库,再分别使用一个总管理员和两个租户账号验证跨租户隔离、发布、编辑、删除、历史分页和跨域嵌入。 ## 生产说明 - 每次更新代码后先运行 `php bin/migrate.php`,确保新增配置字段已同步到数据库。 - 备份数据库和 `storage/uploads`,两者必须同步恢复。 - Web 根目录下的 `config`、`src`、`database`、`bin`、`views`、`tests`、`.git` 和日志目录必须拒绝公网访问。 - 图片目录必须禁止 PHP 等脚本执行;仓库已提供 Apache 规则和 Nginx 示例。 - 关闭 `expose_php` 和 Nginx `server_tokens`,数据库账号使用仅限本库的最小权限并设置高强度随机密码。 - 后台“安全审计”会显示最近的登录失败、锁定和敏感管理操作,应定期检查陌生 IP。 - 本版本容量目标为总计不超过 200 名同时加载组件的访客;更高并发应增加 Redis 缓存或升级为推送架构。