Vytvářel jsem podle různých návodů administraci k webu. Stránky jsou zaheslované pro jednoho uživatele a heslo je vloženo v kódu (index.php).
Mám databází více uživatelů, kterým bych chtěl zpřístupnit tuto administraci. Chtěl jsem poprosit o radu, jak skript upravit, aby kontroloval uživatele z databáze, např. tabulky uzivatele a ne ze skriptu (pouze jednoho uživatele).
Níže uvádím 3 hlavní skripty:
1. Přihlašovací formulář (login.php)
<?php
session_unset();
?>
<form action="index.php" method="post">
Uživatel: <input type="text" name="user"><br>
Heslo: <input type="password" name="heslo"><br>
<input type="submit" value="Příhlásit">
</form>
2. hlavní skript s kontrolou (index.php)
<?php
session_start();
$login = $_POST['user'];
$pass = $_POST['heslo'];
//přihlašovací údaje
$login1 = 'admin';
$pass1 = 'heslo';
if (($login == $login1) and ($pass == $pass1) or ($_SESSION['authuser'] == 1)) { $_SESSION['authuser'] = 1; } else {
echo "<meta http-equiv='Refresh' content='0 ; URL=login.php'>";
exit(); }
?>
3. skript (ten je ve všech ostatních stránkách)
<?php
if ($_SESSION['authuser'] != 1) {
echo "<meta http-equiv='Refresh' content='0 ; URL=../index.php'>";
echo "<p>Nemáte oprávnění k prohlížení této stránky</p>\n";
exit();
}
?>
Děkuji moc za pomoc
no třeba se udělá z proměnné pole proměnných, viz
http://cz.php.net/manual/en/function.array.php
http://cz.php.net/manual/en/ref.array.php
a údaje se uloží tam
nebo se
udělá opravdová tabulka v databázi odkud se data načtou
http://cz.php.net/manual/en/book.mysql.php
PS: místo:
echo "<meta http-equiv='Refresh' content='0 ; URL=../index.php'>";
by bylo možná lepší použít
http://cz.php.net/manual/en/function.header.php
Není to přímo odpověď na otázku, ale mně se osvědčila HTTP autentizace přes .htpasswd - jednoduché a účinné.
to jsem teď zkoušel. vytvořil jsem si v databázi tabulku s názvem USER a pokoušel se o porovnání dat s formuláře. Místo přihlašovacích údajů napsaných ve skriptu, jsem zkoušel se připojit k DB. Ovšem nevím, jak to upravit, aby to přesně fungovalo, protože teď to pustí každého (funkce while tam asi nemá být, nevím však, jak ji nahradit). Viz úprava skriptu níže:
2. hlavní skript s kontrolou (index.php)
<?php
session_start();
$login = $_POST['user'];
$pass = $_POST['heslo'];
//přihlašovací údaje
include '../konfigurace.php'; //připojení databáze
$overeni = MySQL_Query("SELECT * FROM user WHERE login = '$login1' AND heslo ='$pass1' ") or die($query_error);
while ($entry = MySQL_Fetch_Array($fc_kontakt)):
if (($login == $login1) and ($pass == $pass1) or ($_SESSION['authuser'] == 1)) { $_SESSION['authuser'] = 1; } else {
echo "<meta http-equiv='Refresh' content='0 ; URL=login.php'>";
exit(); }
endwhile;
?>
no napr toto:
<?php
session_start();
$login = $_POST['user'];
$pass = $_POST['heslo'];
//přihlašovací údaje
include '../konfigurace.php'; //připojení databáze
$overeni = MySQL_Query("SELECT * FROM user WHERE login = '$login1' AND heslo ='$pass1' ") or die($query_error);
if (MySQL_Num_Rows($overeni)>0){ $_SESSION['authuser'] = 1;
}else{
echo "<meta http-equiv='Refresh' content='0 ; URL=login.php'>";
exit();
}
?>