| 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