2 回答
TA贡献1998条经验 获得超6个赞
我同意 GrumpyCrouton 的评论。发布到一个以上的页面是很难环绕我的头。. . 用户的浏览器会一分为二吗?另一种方法是 POST 到您的 LoginCheck.php,然后该页面会将 $_POST 数据保存到一个或多个 $_SESSION 值中,以便后续页面使用它们。
if ($authenticated) $_SESSION['user'] = $_POST['user'];
TA贡献1911条经验 获得超7个赞
正如其他人所说,发布到两个不同的页面不是登录检查后检索数据的方式。我们通常使用$_SESSION. 阅读文档
话虽如此,我不知道您使用的是 PDO 还是 MySQli,因此我将仅使用 MySQli 为例。
这是简单/干净的方法:
表单.php
<form method ="POST" action="LoginCheck.php">
<div class="form-input">
<b> User Name <b><br />
<input type="text" name="user" id="user" />
<br />
<b> Password <b><br />
<input type="text" name="password" id="password" />
<br />
<input type="submit" type="submit" value="Login" class="btn-login"/>
</form>
登录检查.php
if (!empty( $_POST )) {
if ( isset( $_POST['user'] ) && isset( $_POST['password'] ) ) {
//post variables
$user = $_POST['user'];
$password = $_POST['password'];
//check the database if there are records matching user info
$stmt_invalidatepass = $conn->prepare("SELECT password,id FROM users
WHERE username=? ORDER BY dateCreated DESC LIMIT 1");
$stmt_invalidatepass->bind_param("s",$user);
$stmt_invalidatepass->execute();
$resultvvvid = $stmt_invalidatepass->get_result();
$rowvalida = $resultvvvid->fetch_assoc();
$checkPassword = $rowvalida['password'];
//verify password
$hash1_verified = password_verify($password, $checkPassword);
if( ($hash1_verified==false)){
//oops no result redirect to login.php
}else{
//found user
//set in session
$_SESSION['user_id'] = $rowvalida['id'];
//redirect to home.php
header("Location: home.php");
exit();
}
}
}
主页.php
// Always start this first
session_start();
if (!isset($_SESSION['user_id'])) {
header("Location: login.php");
exit();
} else {
//do user queries here
}
- 2 回答
- 0 关注
- 324 浏览
添加回答
举报