Brak przekazania wartości zmiennej przy pomocy sesji.

Odpowiedz Nowy wątek
2019-06-05 04:53
0

Na wstępie chciałbym uprzedzić, że jestem totalnym początkującym jeżeli chodzi o programowanie.

Postawiłem sobie za cel zrobienie prostego systemu z wyświetlaniem aktualności pobranych z bazy danych i z systemem logowania. O ile z zrobieniem systemu news'ów nie miałem problemu, tak z logowaniem idzie mi dość opornie i pojawił się problem, którego sam nie potrafię rozwiązać. Chciałem zrobić coś takiego, że po zalogowaniu zamiast przycisków "Logowanie" i "Rejestracja", wyświetlać się będą przyciski "Panel Użytkownika" i "Wyloguj". Niestety coś poszło nie tak i mimo, tego że niby całe logowanie kończy się pomyślnie.

Przy logowaniu ustawiam wartość zmiennej "zalogowany" na "true":

session_start();
    if ((!isset($_POST['User_Name'])) || (!isset($_POST['User_Password'])))
    {
        header('Location: ../index.php');
        exit();
    }

    require_once "./config/db_connection.php";
    if ($Connection->connect_errno!=0)
    {
        echo "Error: ".$Connection->connect_errno;
    }
    else
    {

    $User_Name = $_POST['User_Name'];
    $User_Password = $_POST['User_Password'];

    $User_Name = htmlentities($User_Name, ENT_QUOTES, "UTF-8");
    $rezultat = @$Connection->query("SELECT * FROM users WHERE User_Name='$User_Name'");

    if($rezultat->num_rows != 0)
    {
            $wiersz = $rezultat->fetch_assoc();             
            if (password_verify($User_Password, $wiersz['User_Password']))
            {
                $Verified = $wiersz['Verified'];

                    if($Verified == 1)
                    {
                        **$_SESSION['zalogowany'] = true;**
                        $_SESSION['Id_User'] = $wiersz['Id_User'];
                        $_SESSION['User_First_Name'] = $wiersz['First_Name'];
                        $_SESSION['User_Last_Name'] = $wiersz['Last_Name'];
                        $_SESSION['User_Email'] = $wiersz['Email'];

                        unset($_SESSION['blad']);
                        $rezultat->free_result();
                        header("Location: ../index.php");
                    }
                    else
                    {
                        $_SESSION['blad'] = '<span style="color:red">Potwierdź konto!</span>';
                        header('Location: ../index.php');
                    }
                }
                else 
                {
                    $_SESSION['blad'] = '<span style="color:red">Nieprawidłowy login lub hasło!</span>';
                    header('Location: ../index.php');
                }
        } 
        else 
        {
                    $_SESSION['blad'] = '<span style="color:red">Nieprawidłowy login lub hasło!</span>';
                    header('Location: ../index.php');
        }   
        $Connection->close();
    }

Natomiast w innym pliku mam coś takiego:

<div id ="login">
                    <ul class = "text_login">
                        <?php
                        if((isset($_SESSION['zalogowany'])) && ($_SESSION['zalogowany']==true))
                            {
                                echo '<li><a href="#"><button class="login_button">Panel Użytkownika</button></a></li>
                                <li><a href="../logout.php" ><button class="login_button">Wyloguj</button></a></li>';
                            }
                        else
                        {
                            echo '<li><a href="login.php"><button class="login_button">Logowanie</button></a></li>
                            <li><a href="/register.php" ><button class="login_button">Rejestracja</button></a></li>';
                        }
                        ?>
                    </ul>
                </div>
            </div>

Wydawało mi się, że przy pomocy sesji, wartość zmiennej 'zalogowany' powinna przejść do innego pliku w którym jest otwarta sesja i wpłynąć na to co jest wyświetlane. Niestety wyświetla mi cały czas zawartość po else.(Samo logowanie chyba raczej działa poprawnie, bo przenosi mnie do dobrej lokalizacji.) Nie wywala żadnego błędu, wszędzie ustawione session_start(). Będę bardzo wdzięczny za oświecenie mnie co robię źle. :)

Pozostało 580 znaków

2019-06-05 08:16
0

Czy w tym innym pliku odpalasz też session_start():?


Pozostało 580 znaków

2019-06-05 14:01
0
Patryk27 napisał(a):

Czy w tym innym pliku odpalasz też session_start():?

Tak w każdym pliku mam "session_start();"

Ogólnie wygląda to tak, że kod logowania wykonuje się pomyślnie, ale nie ustawia wartości "$_SESSION['zalogowany'] =" na "true".

@edit

Jednak problemem okazał się źle działający xampp. Tak to wszystko działa. :)

edytowany 2x, ostatnio: Quori, 2019-06-05 17:56

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0