chore: 导航链接的 src 改为读配置,去掉代码里的个人域名

面向公开仓库脱敏:高德 URI API 的 src 原先在服务端与前端各写死一份个人域名。

- src/helpers.php / templates/nodes/form.php:src 统一取 `config.php` 的 `amap.nav_src`。
  前端模板用 json_encode 输出,与后端同源 —— 原先这个值在两处各写一遍,
  注释里也提醒着「改一边就得改另一边」,现在只改配置一处即可。
- config.example.php:新增 `amap.nav_src`,默认占位 `trip.example.com`
  (src 只是高德侧的来源统计标识,填任意英数字串都能正常工作),
  并注明部署时按自己的域名改这一行。
- LICENSE:版权署名由个人昵称改为 The TripLog Authors。

线上配置已同步补上 `nav_src`(保持原有取值),因此**线上行为不变**:
以线上真实代码 + 真实配置跑过 amap_nav_url(),PHP 7.4 与 8.1 产出的 URL 与改动前逐字节一致。

验证:php -l 全过;amap_nav_url 单测 25/25(新增「src 必须来自配置」「源码里不得出现个人域名」
两条守卫,并做了反向验证 —— 把域名写回去时确实会红);渲染检查 386/386;
部署 10 步全绿(双版本 php -l + 静态断言 + 哈希校验 + 数据库迁移 + HTTP 冒烟 + 真实渲染)。
This commit is contained in:
2026-09-28 19:12:59 +08:00
parent 5645a8db5c
commit cd37f89807
4 changed files with 22 additions and 5 deletions
+10 -2
View File
@@ -273,6 +273,9 @@ function media_avatar(?string $url): string
* ⚠️ 只给 to 不给 from:from 留空时移动端会自动用「当前位置」当起点,
* 这正是「导航到这个位置」的语义。
*
* src 参数取 `config.php` 的 `amap.nav_src`(仅统计用,默认占位 `trip.example.com`)——
* 部署时按自己的域名改这一处即可,服务端与前端自动一致。
*
* 没坐标时退化成关键词搜索 —— 用户在表单里只敲了名字、没从下拉里选中的情况很常见,
* 这种节点也给一个能用的链接,总比什么都不显示强。
*
@@ -285,13 +288,18 @@ function amap_nav_url(array $loc, string $mode = 'car'): string
$lng = trim((string)($loc['lng'] ?? ''));
$lat = trim((string)($loc['lat'] ?? ''));
// 高德 URI API 要求带 src(「调用来源」,只用于统计,任意英数字串都行)。
// 取值统一放 config.php 的 amap.nav_src,与前端 templates/nodes/form.php 里的
// NAV_SRC 同源 —— 想换成自己的域名做统计时,只改配置一处即可。
$src = (string)(app_config()['amap']['nav_src'] ?? 'trip.example.com');
if (is_numeric($lng) && is_numeric($lat)) {
// 只对名称做 URL 编码(逗号保持字面量,否则高德解析不出三段式);
// 名称里若含 & 或 = 也能被正确转义。
$to = $lng . ',' . $lat . ($name !== '' ? ',' . rawurlencode($name) : '');
return 'https://uri.amap.com/navigation?to=' . $to
. '&mode=' . rawurlencode($mode)
. '&policy=1&src=trip.yangyq.net&coordinate=gaode&callnative=1';
. '&policy=1&src=' . rawurlencode($src) . '&coordinate=gaode&callnative=1';
}
$keyword = $name !== '' ? $name : trim((string)($loc['address'] ?? ''));
@@ -299,7 +307,7 @@ function amap_nav_url(array $loc, string $mode = 'car'): string
return '';
}
return 'https://uri.amap.com/search?keyword=' . rawurlencode($keyword)
. '&src=trip.yangyq.net';
. '&src=' . rawurlencode($src);
}
/** 人类可读的文件大小 */