You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何在无表单页面加载时获取UNIX时间戳并保存至文本文件?

解决方案:获取success.html的进入时间

针对你的问题,我整理了几个实用的方案,你可以根据具体需求选择:

方案1:复用现有submit4的处理逻辑(最简便)

看你当前的代码,处理submit4的分支已经在跳转前获取了时间戳并写入文件——这个时间其实就是用户进入success.html的时间(因为PHP重定向是即时触发的)。如果你的需求只是记录通过表单提交进入success.html的时间,那现有代码已经满足要求,不需要额外修改。

如果需要覆盖用户直接访问success.html的场景,或者想要更精准的页面加载时间,可以试试下面的方案。

方案2:用Session传递并记录时间

通过PHP Session把跳转前的时间戳传递到success页面,同时支持直接访问时记录当前时间:

  1. 在所有处理表单的PHP文件开头开启Session:
session_start();
  1. 在处理submit4的分支中,把时间戳存入Session:
if(isset($_POST['submit4'])){
    $t = time();
    $_SESSION['entry_time'] = $t; // 存入Session
    $myfile1 = fopen("temp/time.txt", "w");
    fwrite($myfile1, $t.";\n");
    // 其他无关操作
    header("Location: success.php");
    exit; // 必须加exit,防止后续代码执行导致跳转失效
}
  1. 将success.html改为success.php,在页面开头读取Session并记录:
<?php
session_start();
// 优先用Session中传递的跳转时间,直接访问则用当前时间
$entry_time = isset($_SESSION['entry_time']) ? $_SESSION['entry_time'] : time();

// 这里建议用"a"模式追加记录,避免覆盖之前的时间
$myfile = fopen("temp/time.txt", "a");
fwrite($myfile, $entry_time.";\n");
fclose($myfile);

// 清除Session中的时间,防止用户刷新页面重复记录
unset($_SESSION['entry_time']);
?>
<!-- 这里放入原success.html的所有HTML内容 -->

方案3:用JavaScript记录前端实际加载时间

如果需要更精准的用户端页面加载完成时间(比如浏览器渲染完毕的时间),可以用JS获取时间后通过AJAX传给后端:

  1. 创建一个record_time.php文件,负责接收时间戳并写入:
<?php
if(isset($_POST['timestamp'])){
    $t = $_POST['timestamp'];
    $myfile = fopen("temp/time.txt", "a");
    fwrite($myfile, $t.";\n");
    fclose($myfile);
    echo "时间记录成功";
}
?>
  1. 在success.html中添加JS代码,页面加载时发送时间戳:
<script>
// 获取当前UNIX时间戳(单位:秒)
const entryTime = Math.floor(Date.now() / 1000);

// 用fetch发送请求到后端
fetch('record_time.php', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
    },
    body: `timestamp=${entryTime}`
})
.then(res => res.text())
.then(msg => console.log(msg))
.catch(err => console.error('记录失败:', err));
</script>

方案4:直接将success.html改为PHP页面

如果不需要区分用户进入方式,只要访问success页面就记录时间,直接把success.html改成PHP文件,在页面开头写入时间:

<?php
$t = time();
$myfile = fopen("temp/time.txt", "a");
fwrite($myfile, $t.";\n");
fclose($myfile);
?>
<!-- 原success.html的HTML内容 -->

几个重要注意点

  • 确保temp目录存在,且PHP对该目录有读写权限,否则无法写入文件
  • 用fopen("xxx", "w")会清空文件原有内容,如果需要保留历史时间记录,建议改用"a"模式追加
  • 执行header("Location: ...")后一定要加exit或die(),避免后续代码执行干扰跳转

内容的提问来源于stack exchange,提问作者Rulli Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:01:17