Прошу прощения, если это было задано раньше или я не могу объяснить в отличной форме. Я потратил часы, пытаясь обернуть голову вокруг проблемы, и я просто не могу исправить эту проблему. Код работает нормально локально, но когда я загружаю его на свой сервер, похоже, есть какая-то проблема с тем, как сервер обрабатывает/проверяет разницу во времени между сервером и клиентом. Не уверен точно, как и что думать. Я также знаю, что неправильно вставляю данные в инструкции pdo, на данный момент меня это не волнует. Я приведу все это в более поздний момент.Разница времени и даты с клиентом и сервером?
Часть приложения, с которой я столкнулся, связана с проверкой активной отправки (это своего рода игра). Я хочу сравнить временную метку из базы данных с текущим временем, чтобы узнать, прошло ли время. В случае, когда время прибытия прошло, я хочу установить статус отправки на «поставленный», а также добавить данные в другую таблицу, называемую «хранилище».
function check_active_shipment(){
$pdo = pdo();
$username = $_SESSION['username'];
$statement = $pdo->prepare("SELECT * FROM shipments WHERE username LIKE '$username' AND status LIKE 'active' LIMIT 1");
$statement->execute();
$rows = $statement->fetch();
$id = $rows['id'];
if($rows['type'] == "purchase"){
if(time() >= strtotime($rows['arrival'])){
$statement = $pdo->prepare("UPDATE shipments SET status='delivered' WHERE id LIKE '$id'");
$statement->execute();
$statement = $pdo->prepare("INSERT INTO storage (username, crate_type_id, quantity) VALUES (?, ?, ?)");
$statement->bindParam(1, $username);
$statement->bindParam(2, $rows['crate_type_id']);
$statement->bindParam(3, $rows['quantity']);
$statement->execute();
//header("location:index.php");
}
}
else if($rows['type'] == "sale"){
if(time() >= strtotime($rows['arrival'])){
$statement = $pdo->prepare("UPDATE shipments SET status='delivered' WHERE id LIKE ?");
$statement->bindParam(1, $id);
$statement->execute();
$statement = $pdo->prepare("SELECT cash FROM users WHERE username LIKE ?");
$statement->bindParam(1, $username);
$statement->execute();
$user = $statement->fetch();
$cash = $user['cash'] + $rows['value'];
$statement = $pdo->prepare("UPDATE users SET cash=?");
$statement->bindParam(1, $cash);
$statement->execute();
//header("location:index.php");
}
}
}
Сообщите мне, если есть какая-либо информация, которую мне не хватает, чтобы поделиться.
размещается база данных на другом сервере? Если да, то он размещен на сервере с разным временем/часовым поясом? –
проверить часовой пояс. – eronax59
Все находится на одном сервере, файлах и базе данных. Я не знаю, что это за часовой пояс, но, учитывая, что сервер находится в Стокгольме, я беру на себя Европу/Стокгольм. Любые идеи о том, как узнать часовой пояс сервера/базы данных? –