PHP 重定向并添加时间戳参数,防止重复执行

本文将介绍如何使用 PHP 代码实现网站重定向功能,并添加时间戳参数到 URL 中,同时防止代码重复执行。

实现方法

  1. 获取当前访问的 URL:
$currentUrl = $_SERVER['REQUEST_URI'];
  1. 获取当前时间戳:
$timestamp = time();
  1. 判断是否已经执行过:
 if (isset($_COOKIE['executed'])) {
   // 已经执行过,不再重定向
   exit;
 }
  1. 解析 URL,获取域名和参数:
$urlParts = parse_url($currentUrl);
$domain = $urlParts['host'];
$query = isset($urlParts['query']) ? $urlParts['query'] : '';
  1. 拼接新的 URL:
$newUrl = $domain . '?' . $query . '&timestamp=' . $timestamp;
  1. 设置 cookie,标记为已经执行过:
setcookie('executed', true, time() + 3600);
  1. 重定向到新的 URL:
header('Location: ' . $newUrl);
exit;

代码示例:

// 获取当前访问的 URL
$currentUrl = $_SERVER['REQUEST_URI'];

// 获取当前时间戳
$timestamp = time();

// 判断是否已经执行过
if (isset($_COOKIE['executed'])) {
   // 已经执行过,不再重定向
   exit;
}

// 解析 URL,获取域名和参数
$urlParts = parse_url($currentUrl);
$domain = $urlParts['host'];
$query = isset($urlParts['query']) ? $urlParts['query'] : '';

// 拼接新的 URL
$newUrl = $domain . '?' . $query . '&timestamp=' . $timestamp;

// 设置 cookie,标记为已经执行过
setcookie('executed', true, time() + 3600);

// 重定向到新的 URL
header('Location: ' . $newUrl);
exit;

说明:

  • setcookie 函数用于设置一个名为 executed 的 cookie,并设置其有效期为 1 小时 (3600 秒)。
  • 当再次访问该页面时,isset($_COOKIE['executed']) 会判断是否已经设置了 executed cookie。如果已经设置,则不再执行重定向代码。

注意:

  • 使用 cookie 来判断是否已经执行过代码是一种简单的方法,但存在一些安全问题。如果需要更安全的解决方案,可以考虑使用数据库或其他存储机制来记录执行状态。
  • 时间戳参数可以用于记录用户访问时间,也可以用于缓存控制。
  • 该代码示例仅供参考,实际应用中可能需要根据具体情况进行修改。
PHP 重定向并添加时间戳参数,防止重复执行

原文地址: https://www.cveoy.top/t/topic/PW9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录