如何将值发布到两个不同的PHP页面

时间:2019-06-28 19:48:51

标签: php mysql post php-7

我已经使用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调用它们时,出现错误:注意:未定义索引:用户和注意:未定义索引:密码

2 个答案:

答案 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

}