标签:php
我正在使用此简单的代码行将当前日期输入到var中.
$datevar = date("Y-m-d");
但这给了我服务器的当前日期而不是用户的当前日期.我有一个页面,来自世界各地的用户都在登录,因此这实际上是一个问题.无论如何,我可以使用php来获取它,还是需要让js参与其中?
解决方法:
您可以通过两种方式来实现.使用Javascript将其从浏览器发送到服务器,或使用“按IP定位”服务之一
您可以在这里找到Javascript解决方案get user timezone(感谢@bennes)
这是例子
// 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://timezoneapi.io/api/ip/?" . $ip_address);
// Decode
$data = json_decode($jsondata, true);
// Request OK?
if($data['meta']['code'] == '200'){
// Example: Get the city parameter
echo "City: " . $data['data']['city'] . "
";
// Example: Get the users time
echo "Time: " . $data['data']['datetime']['date_time_txt'] . "
";
}
当然最好将偏移量保存到$_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
来源: https://codeday.me/bug/20191109/2012921.html