Autor Zpráva
xXx
Profil *
Zdravím,
snažím se svépomocí udělat administraci webu (přidávání, upravování, mazání článků, fotek, kontaktů atd.). Momentálně řeším přihlašovaní do administrace a její "zabezpečení". Moje idea je taková

Po vstupu na přihlašovací formulář (login.php) - kontrola (prihlaseni.php), jestli je uživatel již přihlášen ($_SESSION['prihlasen'] == 1)
    A) Podstrčím mu administrace.php
    N) Podstrčím mu prihlasovaci_formular.php

Při vstupu na administrace.php kontrola (co kdyby někdo zadal jako adresu domena.cz/administrace.php), jestli je uživatel přihlášen ($_SESSION['prihlasen'] == 1)
    A) Má přístup k administraci
    N) Výpis, že zde dotyčný nemá co dělat + odkaz na úvodní stránku (index.php)

Pozn. A = true, N = false

A teď jednotlivé php soubory

login.php (načte se po kliknutí na odkaz "Administrace")
<?
    /* KONTROLA, ZDA-LI JE UŽIVATEL PŘIHLÁŠEN */
    if($_SESSION['prihlasen'] == 1)
    {
        header('Location: ../administrace.php');
        exit;
    }
    else
    {
        header('Location: ../prihlasovaci_formular.php');
        exit;
    }
?>

prihlasovac_formular.php (načte se pokud uživatel není přihlášen)
<!DOCTYPE html>
<html>
    <head>
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <meta content="cs" http-equiv="Content-Language">
        
        <title>Login</title>
        
        <style type="text/css">
              @import url("css/screen.css") screen;
        </style>
    </head>

    <body>
        <form method="post" action="php/prihlaseni.php">
            <fieldset>
                <legend>Login</legend>

                <label for="un">Username</label>
                <input type="text" id="un" name="un" autocomplete="off" required>

                <label for="pw">Password</label>
                <input type="password" id="pw" name="pw" autocomplete="off" required>

                <div id="warning">
                    <?
                        switch ($_GET['logged'])
                        {
                            /* POKUD ŠPATNĚ ZADANÉ UN NEBO PW */
                            case 'false':
                                echo 'Špatné jméno nebo heslo';
                                break;

                            /* PŘI PRVOTNÍM NAČTENÍ */
                            case '':
                                echo '&nbsp;';
                                break;
                        }
                    ?>
                </div>
                <button>Login</button>
            </fieldset>
        </form>
    </body>
</html>

prihlaseni.php (po stisku tlačítka "Login"; kontrola přihlašovacích údajů)
<?
    require("../admin/inc/config.inc.php");
    require("../admin/inc/func.php");
    require("../admin/inc/ini.php");

    /* VYHLEDÁNÍ PŘIHLAŠOVACÍCH ÚDAJŮ V DB */
    $dotaz = ("SELECT * FROM users
        WHERE
            un = '{$_POST['un']}'
        AND
            pw = '".md5($_POST['pw'])."'
    ");
    $vysledek = queryDBdata($dotaz);

    /* KONTROLA, JESTLI BYLY ZADÁNY SPRÁVNÉ PŘIHLAŠOVACÍ ÚDAJE */
    if(count($vysledek) == 1)
    {
        session_start();
        $_SESSION['prihlasen'] = 1;
        $_SESSION['jmeno'] = $vysledek[0]['jmeno']." ".$vysledek[0]['prijmeni'];

        header('Location: ../administrace.php');
        exit;
    }
    else
    {
        header('Location: ../prihlasovaci_formular.php?logged=false');
        exit;
    }
?>

administrace.php (pokud byl již uživatel přihlášen, nebo byly zadány správně přihlašovací údaje)
<!DOCTYPE html>
<html>
    <head>
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <meta content="cs" http-equiv="Content-Language">
        
        <title>Administrace</title>
        
        <style type="text/css">
              @import url("css/screen.css") screen;
        </style>
    </head>

    <body>
        <?
            /*echo $_SESSION['jmeno'];*/

            if($_SESSION['prihlasen'] == 1)
            {
                /*
                    SAMOTNÁ ADMINISTRACE
                */
            }
            else
            {
                echo '
                    <h1>Neoprávněný přístup!</h1>
                    <a href="#">Návrat na úvodní stránku</a>
                ';
            }
        ?>
    </body>
</html>

Jsem s PHP začátečník, takže nevím, zda-li je toto dobrý nápad. Proto zakládám toto téma, abych si nechal eventuálně poradit lepší směr, kterým se ubírat, než je tento. A další věc je ta, že se mi nedaří načíst $_SESSION['prihlasen'] na jiných stránkách (i když jsem přihlášen).
jenikkozak
Profil
xXx:
A další věc je ta, že se mi nedaří načíst $_SESSION['prihlasen'] na jiných stránkách (i když jsem přihlášen).
Na každé stránce, ve které chceš se sessiony pracovat, musíš nejprve volat funkci session_start().

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: