Wątek przeniesiony 2016-02-19 07:17 z PHP przez dzek69.

Jak zrobić panel logowania w PHP , żeby user był zalogowany na każdej podstronie .

0

Witam, mam pytanie zrobiłem prosty system logowania z poradnika z pewnej strony smile.gif następnie "podpiąłem" ten panel logowania do mojej strony , która napisałem w html , działa OK ale pytanie jak zrobić żeby działało na każdej podstronie serwisu .. tzn. żeby użytkownik był zalogowany cały czas nawet jeśli przejdzie na podstronę (obecnie jak kliknę w inna podstronę to się wylogowuje , nawet jak przejdę na stronę główną zaraz po zalogowaniu) jak to napisać w php? Jestem początkującym , proszę o wyrozumiałość smile.gif P.S. wiem , że nikt nie napisze tego za mnie , nie tego oczekuje , tylko proszę o jakieś wskazówki , pokazanie jak to zrobić.. smile.gif

    plik zaloguj.php na który jest przekierowanie po wpisaniu danych logowania 
     
     
    <?php
     
        session_start();
     
        if((!isset($_POST['login'])) || (!isset($_POST['haslo'])))
        {
            header('Location: index.html');
     
            exit();
        }
        require_once "connect.php";
     
        $polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
     
        if ($polaczenie->connect_errno!=0)
        {
            echo "Error:".$polaczenie->connect_errno;
        }
        else
     
        {
         $login = $_POST['login'];
         $haslo = $_POST['haslo'];
     
          $login = htmlentities($login,ENT_QUOTES, "UTF-8");
          $haslo = htmlentities($haslo,ENT_QUOTES, "UTF-8");
     
     
        if($rezultat = @$polaczenie->query(
        sprintf("SELECT * FROM uzytkownicy WHERE user='%s' AND pass='%s'",
        mysqli_real_escape_string($polaczenie,$login),
        mysqli_real_escape_string($polaczenie,$haslo))))
        {
            $ilu_userow = $rezultat->num_rows;
            if($ilu_userow>0)
            {
                $_SESSION['zalogowany'] = true;
     
                $wiersz = $rezultat->fetch_assoc();
                $_SESSION['id'] = $wiersz['id'];
                $_SESSION['user'] = $wiersz['user'];
                $_SESSION['email'] = $wiersz['email'];
                $_SESSION['kontovip'] = $wiersz['kontovip'];
     
     
                unset($_SESSION['blad']);
                $rezultat->free_result();
     
                header('Location: profile.php');
     
            }else{
     
                $_SESSION['blad'] = '<span style="color:red"> Nieprawidłowy login lub hasło!</span>';
                header('Location: index.php');
            }
     
        }
        $polaczenie->close();
     
        }
     
    ?>
     
     
    dalsza cześć kod plik profile.php
     
    <?php
     
    session_start();
     
    if (!isset($_SESSION['zalogowany']))
        {
            header('Location: index.html');
            exit();
        }
     
    ?>
     
    logout.php
     
     
        <?php
     
        echo "<p>Witaj ".$_SESSION['user'].'![<a href="logout.php">Wyloguj się</a>]';
        echo "<p><b>E-mail</b>:".$_SESSION['email'];
        echo "|<b>Konto Vip</b>:".$_SESSION['kontovip']."</p>";
    ?>
     
    w indeksie mam wklejone to :
     
    <?php
        session_start();
     
        if ((isset($_SESSION['zalogowany'])) && ($_SESSION['zalogowany']==true))
        {
            header('Location: profile.php');
            exit();
        }
    ?>
     
    <?php
                        if(isset ($_SESSION['blad'])) echo $_SESSION['blad'];
     
                            ?>
     formularz logowania w html:
 
Zaloguj się: <br />
                        <br />
 
                         <form action="zaloguj.php" method="post">
                            Login: <br/> <input type="text" name="login" /> <br />
                            Hasło: <br /> <input type="password" name="haslo" />
 
                            <input type="submit" value="Zaloguj" />
 
                        </form> 
0

Po prostu wklejasz ten kod na początku każdej podstrony i jak się użytkownik zalogował to będzie zalogowany do końca bieżącej sesji a w przeciwnym razie będzie przenoszony do profile.php :)

<?php
        session_start();
 
        if (!(isset($_SESSION['zalogowany'])) && ($_SESSION['zalogowany']==true))
        {
            header('Location: profile.php');
            exit();
        }
    ?>
0

Zamiast doklejać kod do każdej podstrony zrób nowy skrypt z tym kodem i dołączaj do pozostałych za pomocą include/require. Może kiedyś coś będziesz chciał zmienić i co ? Będziesz wertował każdy plik po kolei.

0

Dzięki za odpowiedz ale chyba nie tak ( nie chce się wymądrzać , bo jestem początkującym w PHP ) jeśli wstawię ten kod (miałem go już na jednej podstronie ) to będzie po sprawdzeniu czy user jest zalogowany przekierowywać każda podstronę do profile.php , a nie o to mi chodzi coś mi się wydaje ze chyba musiałbym stworzyć osobne menu dla zalogowanych ,podlinkować to i wtedy by to działało .. jak myślicie myle sie czy nie?

0
Autor jest leniwy i nie reaguje na prośby o sformatowanie posta - treść usunięta. Zachęcam do edycji. - @dzek69
0

Sto lat nie pisałem w PHP ale...

sprawdzasz czy Klient jest zalogowany za pomocą:

$_SESSION['zalogowany']

jezeli jest true to znaczy, ze zalogowany.

Wiec na poczatku kazdej strony, na ktorej wymagasz zeby Klient byl zalogowany musisz po prostu sprawdzic ta wartosc. Najlepiej zrobic osobny plik i dac tam ten fragment:

 <?php
 
    session_start();
 
    if (!isset($_SESSION['zalogowany']))
        {
            header('Location: index.html'); //tutaj odsyla do index ale rownie dobrze mozesz odeslac od razu do formularza logowania
            exit();
        }
 
    ?>

No i potem taki plik wklejasz do kazdej strony za pomoca np:

include('sprawdzanie_sesji.php');

P.S.
Jak się mylę to mnie poprawujcie ;)

0

Dzięki za odpowiedz

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