Bejelentkezés PHP és Session segítségével

Bejelentkezés PHP és Session segítségével

Ebben a példában készítünk egy bejelentkezést Session-el.

Haszontalannak jelölve: 0
Hasznosnak jelölve: 1
Kulcsszavak: php, bejelentkezés, login, session
Elérhető: Nem érhető el

Ebben a példában készítünk egy oldalt ahol végrehajthatunk egy bejelentkezést.

Ehhez szükségünk van HTML-re, PHP-ra és esetleg egy kevés CSS-re, hogy nézhető formában tegyük ki az elemeket.

A sikeres bejelentkezést Session-ben tároljuk.

Az elképzelés a következő:

  • - ellenőrizzük a Session alapján, hogy be vagyunk-e jelentkezve
  • - ha a felhasználó küldött adatokat, ellenőrizzük, hogy azok megfelelőek vagy nem
  • - ha az adatok megfelelőek voltak, kiírjuk, hogy sikeresen bejelentkezett és elmentjük a Session-ben
  • - ha nem jöttek adatok, vagy hibás adatok jöttek, kitesszük a formot az újra próbálkozáshoz

1. Hozzunk létre 2 fájlt: "index.php" és "functions.php".

2. Tegyük bele a <body> és a </body> tagok közé az alábbi formot az "index.php"-ban:

 

Forráskód mutatása

Ennek a formnak a segítségével ha beírunk bármit a megadott mezőkbe és megnyomjuk a "Bejelentkezés" gombot, akkor azt elküldjük az oldalnak, és így megpróbálhatunk bejelentkezni.

3. Az adatok elküldése után most szükségünk van arra, hogy ellenőrizzük azokat és végrehajtsuk a bejelentkezést.

Az ellenőrzést a példa elején leírt lista alapján a form kirakása előtt kell ellenőrizni, az alábbi módon:

A "functions.php"-ba írunk 3 függvényt


    <?php

    function try_to_login()
    {
        // Ha bejelentkezhetünk
        if( can_try_login() == FALSE )
        {
            return;
        }

        // Ha a felhasználó név vagy a jelszó nem talál , hiba üzenet mutatása
        if( check_login() == FALSE )
        {
            echo "Helytelen adatok";
            return;
        }

        // Ha minden tökéletes, akkor bejelentkezés, és üzenet mutatása
        echo "Sikeres bejelentkezés";

        $_SESSION["is_logged_in"] = TRUE;
    }

    function can_try_login()
    {
        // Ha üres a $_POST akkor nincs mit csinálni
        if( empty( $_POST ) )
        {
            return FALSE;
        }

        // Ha nem érkezett username akkor nincs mit csinálni
        if( ! isset( $_POST["username"] ) )
        {
            return FALSE;
        }

        // Ha nem érkezett jelszó akkor nincs mit csinálni
        if( ! isset( $_POST["password"] ) )
        {
            return FALSE;
        }

        // Ha minden OK
        return TRUE;
    }

    function check_login()
    {
        $username = "teszt";
        $password = "123456";

        // Ha nem talál a felhasználó név, hiba
        if( $_POST["username"] != $username )
        {
            return FALSE;
        }

        // Ha nem talál a jelszó, hiba
        if( $_POST["password"] != $password )
        {
            return FALSE;
        }

        // Minden ok, bejelentkezhet
        return TRUE;
    }

    ?>


    

Az "index.php" fájl legelején elindítjuk a Session-t és betöltjük a "functions.php" fájlt.
Ezért illeszük az alábbi kódot a fájl elejére:


    <?php
    // Elindítjuk a Session-t
    session_start();

    include "functions.php";
    ?>


    

A kód beillesztése után, már csak meg kell hívjuk azt a függvényt amelyik végrehajtja számunkra az ellenőrzést és a bejelentkezést.

A form előtt hívjuk meg a függvényt, az alábbi módon:


    <?php
    // Megpróbálunk bejelentkezni
    try_to_login();
    ?>

    <form action="" method="POST" class="form_login margin-center">
        <div>
            <label>Felhasználó név</label>
            <input type="text" name="username" value="" />
        </div>

        <div>
            <label>Jelszó</label>
            <input type="password" name="password" value="" />
        </div>

        <div class="buttons">
            <input type="submit" name="submit" value="Bejelentkezés" />
        </div>
    </form>


    

A fenti kód, az adatok elküldése után az alábbi 2 üzenet közül az egyiket fogjuk kapni

  • - Minden mező kitöltése kötelező!
  • - Sikeresen bejelentkeztél!

A "Sikeresen bejelentkeztél!" üzenet esetében a Session-ben beállítódik, hogy sikeres volt a bejelentkezés.

A "Sikeresen bejelentkeztél!" üzenethez használjuk a következő adatokat:

Felhasználó név: teszt
Jelszó: 123456

4. Ahhoz, hogy a bejelentkezés után a form többet ne jelenjen meg ellenőriznünk kell, hogy a Session-ben be van állítva a megfelelő érték vagy nincs. Ezt megtehtjük az alábbi módon:


    <?php
    // Ha nem létezik a Sessionben érték, beállítjuk, hogy nem vagyunk bejelentkezve
    if( ! isset( $_SESSION["is_logged_in"] ) )
    {
        $_SESSION["is_logged_in"] = FALSE;
    }

    // Megpróbálunk bejelentkezni
    try_to_login();

    // Ellenőrizzük, hogy be vagyunk-e jelentkezve vagy nem, ha nem megjelenítjük a formot
    if( $_SESSION["is_logged_in"] == FALSE )
    {
    ?>
        <form action="" method="POST" class="form_login margin-center">
            <div>
                <label>Felhasználó név</label>
                <input type="text" name="username" value="" />
            </div>

            <div>
                <label>Jelszó</label>
                <input type="password" name="password" value="" />
            </div>

            <div class="buttons">
                <input type="submit" name="submit" value="Bejelentkezés" />
            </div>
        </form>
    <?php
    }
    else
    {
    ?>
        <p>
            Be vagy jelentkezve, kilépéshez töröld a $_SESSION["is_logged_in"] értékét 
            vagy állítsd FALSE-ra.
        </p>
    <?php
    }
    ?>


    

A kijelentkezéshez, csak egyszerűen törölni vagy "FALSE"-ra kell állítani az "is_logged_in" értékét a Session-ben.

A példa és a benne szereplő kódok letölthetőek a jobb oldalon található link segítségével

Hasonló példák