首页 > 解决方案 > 使用 Javascript 和 PHP 加载第一页/单页时客户端的 UTC 偏移量

问题描述

我正在使用以下内容来确定 UTC 偏移量并将其传递给 PHP 变量 ( $utc_offset)。问题是它$utc_offset只会在第二页加载时有一个值(在第一页加载时为空)。如何在一页加载中将 UTC 偏移量传递给 PHP?

    <script>
    var dateVar = new Date();
    var offset = dateVar.getTimezoneOffset();
    document.cookie = "offset="+offset/60;
    </script>

    <?php
    echo $utc_offset = $_COOKIE['offset'];
    ?>

标签: javascriptphpcookiesutc

解决方案


所以:

  • 用户首次访问该页面
  • 一个请求被发送到服务器
  • 服务器向用户发送内容,包括 Javascript 代码
  • Javascript 代码将生成一个 cookie
  • 在随后的加载中,cookie 是正确的(但不是在第一次加载时)

问题是,为了执行您的 Javascript,您需要将其发送到浏览器,此时您需要的 cookie 尚未创建。但是,即使您无法在第一次加载时解决此问题,您也可以通过在创建 cookie 后立即发送AJAX 请求来实现几乎类似的行为,这样服务器就会得到它。

因此,当偏移量未知时,您需要处理首次访问,但随后自动发送到服务器的 AJAX 请求可以解决此问题。


推荐阅读