我是 PHP 初学者,我想将用户登录时间存储在另一个名为 LoginHistory 的表中,我不知道如何编写查询。你能帮我吗?
<?php
include_once "conn.php";
if (!isset($_SESSION)) {
session_start();
}
if ($_SERVER['REQUEST_METHOD'] == "POST") {
if (empty($_POST["mobile_no"]) && empty($_POST["log_password"])) {
echo '<script>alert("Both Fields are required") </script>';
}
$sql = "select * from Users where Mobile='" . $_POST['mobile_no'] . "' and
Password='" . md5($_POST['log_password']) . "'";
if ($result = mysqli_query($conn, $sql)) {
$rowcount = mysqli_num_rows($result);
}
if ($rowcount > 0) {
$row = $result->fetch_assoc();
$_SESSION["userId"] = $row['Id'];
$_SESSION["ConstituencyId"] = $row['ConstituencyId'];
$succmsg = "Login Success";
header("location:user-login-welcome.php");
} else {
$errmsg = "Invalid Username / Password..";
}
}
?>
最佳答案
我不知道你对数据库连接有多了解,但假设你知道如何创建 PDO 连接(如果不知道的话请查看: http://php.net/manual/en/book.pdo.php )并且你有一个可用的数据库,其中包含一个包含用户名(VARCHAR)的 LoginHistory 表)和时间戳(DATETIME)列,写起来并不难。
假设您的连接存储在 $pdo 变量中。您唯一需要做的就是编写一条插入语句,将用户名和当前时间戳插入数据库。插入语句可以这样写:
INSERT INTO LoginHistory (username, timestamp) VALUES (:username, :timestamp)
如果您想使用 PDO 执行此语句,代码可能如下所示:
$stmt = $pdo->prepare('INSERT INTO LoginHistory (username, timestamp) VALUES (:username, :timestamp)');
$stmt->bindValue(':username', $username);
$stmt->bindValue(':timestamp', date('Y-m-d H:i:s'));
$stmt->execute();
如果您的数据库中还没有用于此目的的表,我建议您查看以下语句:
CREATE TABLE LoginHistory
(
id int PRIMARY KEY NOT NULL AUTO_INCREMENT,
username varchar(255) NOT NULL,
timestamp datetime NOT NULL
);
您可能还想查看当前的语句以获取用户。通过使用串联将变量插入到您的查询中,用户可以通过设置发布值来更改您的查询,如果我使用此值作为 mobile_no 提交登录表单(期望 mobile_no 是用户名),我应该登录:
a_username_that_does_not_exist' OR Mobile='mobile of admin'; --
如果您想防止这种情况,可以使用准备好的语句,请参阅插入示例和 PDO 文档以获取更多信息。
编写陈述的安全方式应该是这样的:
$pdo = new PDO('mysql:host=127.0.0.1;port=3306;dbname=db_name;charset=UTF8;','root','password');
$stmt = $pdo->prepare('SELECT * FROM Users WHERE Mobile=:mobile AND Password=:password');
$stmt->bindValue(':mobile', $_POST['mobile_no']);
$stmt->bindValue(':password', md5($_POST['log_password']));
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if ($user) {
// User is logged in
}
我希望这有帮助;)
关于php - 如何在 mysql PHP 中插入用户登录日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52752808/