我有一个登录表单,其数据存储在表用户中。我还有另一个表,用于存储登录日期和时间。
表用户(ID,用户名,密码)
表user_login(id,user_id,login_date)
我尝试的代码:
$db = mysqli_connect('localhost', 'root', '', 'registration');
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) {
$_SESSION['username'] = $username;
$name = $_SESSION['username'];
$row=mysqli_fetch_array($results);
$user_id= $row['id'];
$date = date('Y-m-d');
$checkdate= "SELECT id from user_login WHERE user_id='$user_id' AND DATE(login_date)='$date'";
$check=mysqli_query($db, $checkdate)or die(mysqli_error($db));
if(mysqli_num_rows($check)==1){
$updatedate="UPDATE user_login set date= $date where id=$user_id";
mysqli_query($db,$updatedate)or die(mysqli_error($db));
}
else{
$insertdate="INSERT INTO user_login (user_id, login_date) values($user_id, $date)";
mysqli_query($db,$insertdate)or die(mysqli_error($db));
}
// $_SESSION['success'] = "You are now logged in";
header('location: profile.php');
}else {
array_push($errors, "Wrong username/password combination");
}
}
}
以上代码仅在我每次登录时添加日期和时间。但是我只想每天保存一次。
答案 0 :(得分:0)
这是一个主意。
您可以将日期保存到user_login表中,然后可以进行检查和比较
在插入用户登录表之前,请先进行检查。 从$ results获取用户的ID。 并检查表: $ date = date('Y-m-d');
从user_login中选择ID,其中user_id = $ user_id和Date(login_date)= $ date
如果有记录,只是更新日期 $ cur_date = date('Y-m-d'); 更新user_login设置日期= $ cur_date,其中id = $ user_login_id 否则插入一个 INSERT INTO user_login(user_id,login_date)值($ user_id,$ cur_date);
希望您能理解逻辑。 我希望您正在使用mysqli_escape_string来防止sql注入。
请勿将md5用于密码加密,而应使用bcrypt或其他安全加密功能。
这是您代码的有效版本。不要在生产中使用它。
$db = mysqli_connect('localhost', 'root', '', 'registration');
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) {
$_SESSION['username'] = $username;
$name = $_SESSION['username'];
$row = mysqli_fetch_array($results);
$user_id = $row['id'];
$date = date('Y-m-d');
$datetime = date('Y-m-d H:i:s');
$checkdate = "SELECT id from user_login WHERE user_id='$user_id' AND DATE(login_date)='$date'";
$check = mysqli_query($db, $checkdate) or die(mysqli_error($db));
if (mysqli_num_rows($check) == 1) {
$updatedate = "UPDATE user_login set login_date='$datetime' where user_id=$user_id and DATE(login_date)='$date'" ;
mysqli_query($db, $updatedate) or die(mysqli_error($db));
} else {
$insertdate = "INSERT INTO user_login (user_id, login_date) values($user_id, '$datetime')";
mysqli_query($db, $insertdate) or die(mysqli_error($db));
}
// $_SESSION['success'] = "You are now logged in";
header('location: profile.php');
die;
}else {
array_push($errors, "Wrong username/password combination");
}
}
这只是演示。