Как разместить значения на двух разных страницах PHP - PullRequest
0 голосов
/ 28 июня 2019

Я создал страницу входа, используя PHP и MySQL, когда я вхожу, он отправляет данные для входа пользователей в систему на страницу LoginCheck.php, где он проверяет эти значения со значениями в базе данных, если они не совпадаютпользователь возвращается на страницу login.php, но если они верны, он переносится на страницу home.php.Теперь я хочу снова получить доступ к этим данным для входа на странице home.php, но я не могу найти способ публикации на двух страницах или на двух разных?Вентеля POST появляются как пустые на странице home.php, когда я пытаюсь вызвать их.

Мой код, приведенный ниже, показывает, как я ПОСТУПАЮ данные для входа в систему на странице LoginCheck.php через HTML,

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

В идеале я бы хотел, чтобы при загрузке страницы POST со страницы LoginCheck я хотел получить значения POST, поскольку эта страница видна пользователю только пару секунд.

Iполучить ошибку: Уведомление: неопределенный индекс: пользователь и Уведомление: неопределенный индекс: пароль, когда я вызываю их через POST в Home.php

Ответы [ 2 ]

2 голосов
/ 28 июня 2019

Я согласен с комментарием GrumpyCrouton. Размещать более одной страницы трудно, чтобы обернуть мою голову вокруг. , , будет ли браузер пользователя разделен на две части? Другой подход будет заключаться в POST для вашего LoginCheck.php, и тогда эта страница сохранит данные $ _POST в одно или несколько значений $ _SESSION, где они могут использоваться на последующих страницах.

if ($authenticated) $_SESSION['user'] = $_POST['user'];
1 голос
/ 29 июня 2019

Как заявили другие, размещение на двух разных страницах не является способом получения данных после проверки входа в систему.Мы обычно используем $_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

}
...