我有三个与我的登录场景的这一部分相关的文件:
/project/index.html
/project/api/user/login.php
/project/api/objects/user.php
index.html 中有一个简单的登录表单,调用 ./api/user/login.php。
在这种形式中,我有一个复选框,用户可以选择是否保持登录状态。
如果用户选择了此选项,每次登录时,我想检查凭据是否正确(登录功能 - > user.php 中的 stmt1)以及更新 lastlogin(日期时间)、标识符和安全令牌(如果复选框已设置(登录功能 - > user.php 中的 stmt2)。
user.php 包含在 login.php 中,它从 index.html 表单中获取值并将它们发送到 user.php 中的 login() 函数。
根据函数的返回值,login.php 决定登录是否成功。
登录本身 (stmt1) 有效,但 lastlogin、标识符和安全令牌 (stmt2) 的更新不起作用。
登录.php
session_start();
// include database and object files
include_once '../config/database.php';
include_once '../objects/user.php';
// get database connection
$database = new Database();
$db = $database->getConnection();
// prepare user object
$user = new User($db);
// set ID property of user to be edited
$user->username = isset($_GET['username']) ? $_GET['username'] : die();
$user->password = base64_encode(isset($_GET['password']) ? $_GET['password'] : die());
$user->remember = isset($_GET['remember']) ? $_GET['remember'] : die();
$stmt1 = $user->login();
if($stmt1->rowCount() > 0){
// get retrieved row
$row1 = $stmt1->fetch(PDO::FETCH_ASSOC);
$_SESSION['userid'] = $row1['uid'];
// create array
$user_arr=array(
"status" => true,
"message" => "Login erfolgreich!",
"uid" => $row1['uid'],
"username" => $row1['username']
);
$stmt2 = $user->login();
$row2 = $stmt2->fetch(PDO::FETCH_ASSOC);
print_r($row2);
// create array
$user_arr=array(
"lastlogin" => $row2['lastlogin']
);
}
else{
$user_arr=array(
"status" => false,
"message" => "Benutzername und/oder Passwort nicht korrekt!",
);
}
// make it json format
print_r(json_encode($user_arr));
?>
子衿沉夜