Autor | Zpráva | ||
---|---|---|---|
xXx Profil * |
#1 · Zasláno: 7. 5. 2014, 10:59:09
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 ' '; 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 |
#2 · Zasláno: 7. 5. 2014, 12:08:49
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() .
|
||
Časová prodleva: 11 let
|
0