在PHP中不允许多个登录

在PHP中不允许多个登录,php,mysql,session,datetime,Php,Mysql,Session,Datetime,我有一个系统,用户可以登录到它。每次特定用户登录时,我都会使用时间戳将登录日期时间存储在MySQL数据库中: 数据库中的每条记录都有一个用户id和登录日期,并存储在我的att日志表中。 但是,我想确保用户每天只能登录一次,基于日期。这是到目前为止我的代码 <?php include('conn.php'); if (isset($_POST['submit'])) { $UserName=$_POST['id_emp'];

我有一个系统,用户可以登录到它。每次特定用户登录时,我都会使用时间戳将登录日期时间存储在MySQL数据库中:

数据库中的每条记录都有一个用户id和登录日期,并存储在我的att日志表中。 但是,我想确保用户每天只能登录一次,基于日期。这是到目前为止我的代码

        <?php
        include('conn.php');
        if (isset($_POST['submit'])) {
        $UserName=$_POST['id_emp']; 
        $Password=$_POST['password'];
        $result=mysql_query("select * from employee where id_emp='$UserName' and password='$Password'" )or die (mysql_error()); 

        $count=mysql_num_rows($result);
        $row=mysql_fetch_array($result);

        if ($count > 0){
        $_SESSION['emp_id']=$row['emp_id'];
        mysql_query("insert into att_log (username,login_date,id)values('$UserName',NOW(),".$row['emp_id'].")")or die(mysql_error());
?>
哪个用户id 34已登录3天,而用户33仅登录1天。因此,我希望用户每天只能登录一次。我仍然在寻找正确的方法来实现对用户每天登录一次的限制


谢谢

看看你的代码,告诉我你有语法错误。编辑:缺少一个引号
。如果这是您正在使用的,请添加它。如果不是,请编辑您的问题。另外,请确保您启动了会话。目前没有语法错误,但它会继续插入att_日志,在同一日期重复使用相同的id_emp。我只想限制1个id_emp可以在1天内记录一个
(“从id为“$UserName”和密码为“$password”的员工中选择*。
-Oh?我对此非常怀疑。你的代码中肯定有语法错误。哦,忘记了“在那里,但相同的id\u emp仍然可以在同一日期存储在att\u日志中。好的,多亏了Carrot先生,我尝试了你的代码,但后来我在if(strotime($row['login\u date'))中意识到了这一点,登录日期是从表employee调用的,不是吗?但是在表EMPLOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOYOY。好运气谢谢你的帮助:D我试了一下,现在得到了“你的SQL语法有错误;检查与你的MySQL服务器版本对应的手册,在第1行的“”附近使用正确的语法”语法
// Compare username/password and check last login date is less than today
$result = mysql_query('select a.*, max(b.login_date) as login_date from employee AS a LEFT JOIN att_log AS b ON a.emp_id = b.id where a.emp_id = "' . mysql_real_escape_string($UserName) . '" and a.password = "' . mysql_real_escape_string($Password) . '" and login_date < DATE(NOW()) GROUP BY a.emp_id' ) or die (mysql_error());

if (mysql_num_rows($result) > 0) {
    $row = mysql_fetch_array($result);
    mysql_query('insert into att_log (username, login_date, id) values("' . mysql_real_escape_string($UserName) . '", NOW(), "' . mysql_real_escape_string($row['emp_id']) . '"') or die(mysql_error());
} else {
    echo 'Access denied';
}
// Compare username/password and check last login date is less than today
$result = mysql_query('select a.*, max(b.login_date) as login_date from employee AS a LEFT JOIN att_log AS b ON a.emp_id = b.id where a.emp_id = "' . mysql_real_escape_string($UserName) . '" and a.password = "' . mysql_real_escape_string($Password) . '" and login_date < DATE(NOW()) GROUP BY a.emp_id' ) or die (mysql_error());

if (mysql_num_rows($result) > 0) {
    $row = mysql_fetch_array($result);
    mysql_query('insert into att_log (username, login_date, id) values("' . mysql_real_escape_string($UserName) . '", NOW(), "' . mysql_real_escape_string($row['emp_id']) . '"') or die(mysql_error());
} else {
    echo 'Access denied';
}
// Compare username/password
$result = mysql_query('select a.*, max(b.login_date) as login_date from employee AS a INNER JOIN att_log AS b ON a.emp_id = b.id where a.emp_id = "' . mysql_real_escape_string($UserName) . '" and a.password = "' . mysql_real_escape_string($Password) . '" GROUP BY a.emp_id' ) or die (mysql_error());

$row = mysql_fetch_array($result);

// If last login date is greater or equal than the start of today, show access denied message
if (strtotime($row['login_date']) >= strtotime(date('Y-m-d 00:00:00')) {
    echo 'Sorry you have already logged in today';
} else {
    mysql_query('insert into att_log (username, login_date, id) values("' . mysql_real_escape_string($UserName) . '", NOW(), "' . mysql_real_escape_string($row['emp_id']) . '"') or die(mysql_error());
}