我正在尝试建立一个系统,其中用户可以登录到一个网站?我成功地构建了这个部分。现在我正在尝试保存登录和注销时间,但每次我保存时间时,我只保存登录时间,而不是注销时间?
那么,我需要如何节省注销时间?还有一件事,当我使用本地时间节省时间时&数据库时间与本地时间不同,我如何解决这个问题?
下面是我的server.php代码
<?php
session_start();
// variable declaration
$username = "";
$email = "";
$errors = array();
$_SESSION['success'] = "";
// connect to database
$db = mysqli_connect('localhost', 'iotaeyjx_login', 'amitsaha1993', 'iotaeyjx_login');
// REGISTER USER
if (isset($_POST['reg_user'])) {
// receive all input values from the form
$username = mysqli_real_escape_string($db, $_POST['username']);
$email = mysqli_real_escape_string($db, $_POST['email']);
$password_1 = mysqli_real_escape_string($db, $_POST['password_1']);
$password_2 = mysqli_real_escape_string($db, $_POST['password_2']);
// form validation: ensure that the form is correctly filled
if (empty($username)) { array_push($errors, "Username is required"); }
if (empty($email)) { array_push($errors, "Email is required"); }
if (empty($password_1)) { array_push($errors, "Password is required"); }
if ($password_1 != $password_2) {
array_push($errors, "The two passwords do not match");
}
// register user if there are no errors in the form
if (count($errors) == 0) {
$password = md5($password_1);//encrypt the password before saving in the database
$query = "INSERT INTO users (username, email, password)
VALUES('$username', '$email', '$password')";
mysqli_query($db, $query);
$_SESSION['username'] = $username;
$_SESSION['success'] = "You are now logged in";
header('location: index.php');
}
}
// ...
// LOGIN USER
if (isset($_POST['login_user'])) {
$username = mysqli_real_escape_string($db, $_POST['username']);
$password = mysqli_real_escape_string($db, $_POST['password']);
if (empty($username)) {
array_push($errors, "Username is required");
}
if (empty($password)) {
array_push($errors, "Password is required");
}
if (count($errors) == 0) {
$password = md5($password);
$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$results = mysqli_query($db, $query);
if (mysqli_num_rows($results) == 1) {
$sql_2 = "INSERT INTO login_logs(username) VALUES ('" . $username . "')";
$results2 = mysqli_query($db, $sql_2);
$_SESSION['username'] = $username;
$_SESSION['success'] = "You are now logged in";
header('location: index.php');
}else {
array_push($errors, "Wrong username/password combination");
}
}
}
if (isset($_POST['logout_user'])) {
$sql_3 = "UPDATE login_logs SET logout_time = current_timestamp where username ='$username'";
$results3 = mysqli_query($db, $sql_3);
$_SESSION['success'] = "You are now logged out";
header('location: index.php');
}
?>
下面是我的index.php代码
<?php
session_start();
if (!isset($_SESSION['username'])) {
$_SESSION['msg'] = "You must log in first";
header('location: login.php');
}
if (isset($_GET['logout'])) {
session_destroy();
unset($_SESSION['username']);
header("location: login.php");
}
?>
<!-- notification message -->
<?php if (isset($_SESSION['success'])) : ?>
<div class="error success" >
<h3>
<?php
echo $_SESSION['success'];
unset($_SESSION['success']);
?>
</h3>
</div>
<?php endif ?>
<!-- logged in user information -->
<?php if (isset($_SESSION['username'])) : ?>
<p>Welcome <strong><?php echo $_SESSION['username']; ?></strong></p>
<br>
<p> <a href="index.php?logout='1'" style="color: red;">Are you Ready to go HOME? Click Here!!</a> </p>
<?php endif ?>
</div>
谢谢你们所有人。
发布于 2018-08-12 04:09:36
解决在数据库中存储登录和注销时间的最佳方法是使用timestamp
作为字段(这是一个标准,因为它以格林尼治标准时间为单位)。
使用php now()
函数,我们可以插入日期值。
要在PHP中获取其他日期的timestamp
,
$timestamp = date('Y-m-d G:i:s', mktime(0, 0, 0, 7, 1, 2000));
https://stackoverflow.com/questions/51803249
复制相似问题