我创建了一个登录页面,在 db 表中我有一个名为 last_access 的字段来存储上次登录日期和时间,数据类型是时间戳
以下是select语句;
$sql="SELECT * FROM $tbl_name WHERE $db_usercol='$myusername' and $db_passcol='$mypassword'";
$result=mysql_query($sql);
每次用户登录时如何更新字段“last_access”?并将值设置为 NOW()。
谢谢
UPDATE $tbl_name set last_access = NOW() WHERE $db_usercol='$myusername'
或者你可以使用
UPDATE $tbl_name set last_access = NOW() WHERE
$db_usercol='$myusername' AND $db_passcol='$mypassword'
而不是您的选择,并检查有多少行受到影响。如果没有 -> 登录不成功。如果 1 -> 登录成功。如果更多,你有一个问题......
但首先应该删除那个 SQL 注入漏洞!
检查http://php.net/manual/en/book.pdo.php,您的 SQL 函数需要进行一些更改,但它实际上很容易使用,例如:
$pdo = new PDO("mysql:host=localhost;dbname=yourdbname", 'dbuser', 'dbpass');
$stmt = $pdo->prepare('SELECT * from table where column = :column');
$stmt->bindParam(':column', $column);
$stmt->execute();
$result = $stmt->fetchAll();
很简单,SQL注入攻击不会成功
在登录脚本/函数中添加:
$sql = sprintf("UPDATE %s SET last_access = NOW() WHERE id = %d", $tbl_name, $user_id);
$result = mysql_query($sql);
希望有帮助。
身份验证成功后,您可以执行以下操作:
//get the id after user has logged in then run the update query
mysql_query("UPDATE your_table SET `last_access` = NOW() WHERE id =".$id);