我已经使用PHP和MySQL制作了一个登录页面,当我登录时,它将用户的登录详细信息POST到LoginCheck.php页面,在该页面中,如果这些值与数据库中的值不匹配,它将检查这些值,用户将返回到login.php页面,但如果正确,则将其带到home.php页面。现在,我希望能够再次在home.php页面上访问这些登录详细信息,但是我找不到通过两个页面或两个不同页面进行发布的方法?当我尝试调用它们时,POST值在home.php页面上显示为空白。
我下面的代码,说明如何通过HTML将用户登录详细信息发布到LoginCheck.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"/>
我也尝试过AJAX传递此值,但它也会返回相同的错误
<script type ="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type ="text/javascript">
$(document).ready(function(){
$('#submit').click(function(){
alert("is working");
var user = $('#user').val();
var password = $('#password').val();
var userData = 'user=' + user + '&password=' + password;
$.ajax({
type: "POST",
url:'home.php',
data: userData,
success: function(){
alert("has passed data");
}
});
});
});
</script>
理想情况下,我希望在加载时从LoginCheck页面获取值POST,因为该页面仅对用户可见几秒钟。
当我通过Home.php中的POST调用它们时,出现错误:注意:未定义索引:用户和注意:未定义索引:密码
答案 0 :(得分:2)
我同意GrumpyCrouton的评论。发布到一页以上很难把我的头缠住。 。 。用户的浏览器会分成两部分吗?另一种方法是将POST发布到您的LoginCheck.php,然后该页面将$ _POST数据保存到一个或多个$ _SESSION值,以供后续页面使用。
if ($authenticated) $_SESSION['user'] = $_POST['user'];
答案 1 :(得分:1)
正如其他人所述,在登录检查后无法将数据发布到两个不同的页面。我们通常使用$_SESSION
。阅读DOCS
话虽如此,我不知道您使用的是PDO还是MySQli,所以我仅以MySQli为例。
这是简单/干净的方法:
form.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>
loginCheck.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();
}
}
}
home.php
// Always start this first
session_start();
if (!isset($_SESSION['user_id'])) {
header("Location: login.php");
exit();
} else {
//do user queries here
}