PHP сбрасывает переменные сессии при обновлении - PullRequest
0 голосов
/ 06 марта 2019

В настоящее время я учусь, как создать систему входа в систему с использованием PHP.Сначала казалось, что все просто - у меня были входные данные, заданные как переменные $_SESSION, а затем я начал сеанс на следующей открываемой странице.Однако, когда я обновляю страницу, сеанс все еще работает, но переменные данные были отброшены и не распознаны.


Вот мой php, который устанавливает переменные:

<?php 
            include ("connection.php"); //connects to the database.

            if(isset($_POST['login'])) 
            {
                $user_name = $_POST['EMAIL'];
                $password = $_POST['PASSWORD'];

                // echo $user_name, " AND ", $password, "<br>";

                $q = "SELECT * FROM ".$table." WHERE EMAIL='".$user_name."' AND PASSWORD= '".$password."' AND IS_ADMIN= 'YES';";
                // echo "<br>",$q,"<br>";
                $r = mysqli_query($conn, $q); 

                if(mysqli_num_rows($r) > 0)
                {
                    if(session_id() == '' || !isset($_SESSION)) 
                    {
                        // session isn't started
                        session_start();

                        echo "<br>GREAT SUCCESS!!!<br>";


                        $_SESSION["SESSION_EMAIL"]= $user_name;
                        $_SESSION["SESSION_PASSWORD"]= $password;  

                        echo $_SESSION["SESSION_EMAIL"], "  ", $_SESSION["SESSION_PASSWORD"];

                        header("Refresh:0; url=\website2.php");
                    }

                } 
                else echo "<br>FAIL!!!<br>";
            }
        ?>  

Вот бит, который я использую для проверки того, что происходит на следующей странице:

<?php   
    session_start(); 
    if (session_status() == PHP_SESSION_ACTIVE) 
    {
        echo 'Session is active <br>';
    } else echo"session is ded";
    echo $_SESSION["SESSION_EMAIL"]; // it prints out an error if it screws up here
?>

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Мне очень не хочется говорить это, и я искренне чувствую, что должен был сделать это раньше, но после перезапуска моего сервера XAMPP и PHP все, кажется, исправилось, и сессия работает прямо сейчас. Теперь ничего не пропадает, и все переходы между страницами выполняются без усилий.

Несмотря на все это, я прошу прощения у всех, кто задумался над этим моим глупым вопросом, и я также хотел бы поблагодарить их за все их время и усилия, которые они прилагают к ответу.

Еще раз спасибо всем!

0 голосов
/ 06 марта 2019
<?php 
     session_start();
        include ("connection.php"); //connects to the database.

        if(isset($_POST['login'])) 
        {
            $user_name = $_POST['EMAIL'];
            $password = $_POST['PASSWORD'];

            // echo $user_name, " AND ", $password, "<br>";

            $q = "SELECT * FROM ".$table." WHERE EMAIL='".$user_name."' AND PASSWORD= '".$password."' AND IS_ADMIN= 'YES';";
            // echo "<br>",$q,"<br>";
            $r = mysqli_query($conn, $q); 

            if(mysqli_num_rows($r) > 0)
            {
                if(!isset($_SESSION["SESSION_EMAIL"])) 
                {
                    // session isn't started


                    echo "<br>GREAT SUCCESS!!!<br>";


                    $_SESSION["SESSION_EMAIL"]= $user_name;
                    $_SESSION["SESSION_PASSWORD"]= $password;  

                    echo $_SESSION["SESSION_EMAIL"], "  ", $_SESSION["SESSION_PASSWORD"];

                    header("Refresh:0; url=\website2.php");
                }

            } 
            else echo "<br>FAIL!!!<br>";
        }
    ?>  

и на второй странице проверьте что-то вроде этого

<?php   
session_start(); 
if (isset($_SESSION["SESSION_EMAIL"])) 
{
    echo 'Session is active <br>';
    echo $_SESSION["SESSION_EMAIL"];
} else echo"session is ded";
 // it prints out an error if it screws up here
?>

надеюсь, что эта помощь

или

Вы можете проверить другую переменную сеанса

...