gpt4 book ai didi

php - 如何获取用户而不是服务器的当前日期

转载 作者:可可西里 更新时间:2023-11-01 01:12:44 25 4
gpt4 key购买 nike

我正在使用这行简单的代码将当前日期放入我的变量中。

$datevar = date("Y-m-d"); 

但这给了我服务器而不是用户的当前日期。我有一个来自全局各地的用户登录的页面,所以这实际上是一个问题。无论如何,我可以用 php 获取它,还是需要让 js 参与进来?

最佳答案

你可以通过两种方式做到这一点。通过 Javascript 将其从浏览器发送到服务器,或者使用“Location-by-IP”服务之一

您可以在这里找到 Javascript 解决方案 get user timezone (感谢@bennes)

但是如果你只想在服务器端做,你可以使用这个服务https://timezoneapi.io/developers/ip-address

这里是例子

// Get IP address
$ip_address = getenv('HTTP_CLIENT_IP') ?:
getenv('HTTP_X_FORWARDED_FOR') ?: getenv('HTTP_X_FORWARDED') ?:
getenv('HTTP_FORWARDED_FOR') ?: getenv('HTTP_FORWARDED') ?:
getenv('REMOTE_ADDR');
// Get JSON object
$jsondata = file_get_contents("http://ip-api.com/json/" . $ip_address);
// Decode
$data = json_decode($jsondata, true);

// Example: Get the city parameter
echo "City: " . $data['city'] . "<br>";
// Example: Get the users time
echo "Time: " . $data['timezone'] . "<br>";

当然最好将偏移量保存到$_SESSION。否则它每次都会生成传出请求。

所以你需要像

这样的东西
session_start();
if (!isset($_SESSION['offset_hours'])) {
$ip_address = getenv('HTTP_CLIENT_IP') ?: getenv('HTTP_X_FORWARDED_FOR') ?: getenv('HTTP_X_FORWARDED') ?: getenv('HTTP_FORWARDED_FOR') ?: getenv('HTTP_FORWARDED') ?: getenv('REMOTE_ADDR');
$jsondata = file_get_contents("http://timezoneapi.io/api/ip/?" . $ip_address);
$data = json_decode($jsondata, true);
if($data['meta']['code'] == '200'){
$_SESSION['offset_hours']= $data['data']['datetime']['offset_hours'];
}
}


echo $_SESSION['offset_hours']; // Here is offset in hours

关于php - 如何获取用户而不是服务器的当前日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48791901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com