Mam zrobić prosty moduł dostępu skryptów, niestety mam parę problemów ale może najpierw kod :
users.php <=tutaj przechowuje login i hasła uzytkownikow.
<?php
$uzytkownicy = array(1 =>
array('login' => 'admin', 'haslo' => 'admin'),
array('login' => 'janek', 'haslo' => 'janek'),
array('login' => 'magda', 'haslo' => 'magda')
);
function czyIstnieje($login, $haslo)
{
global $uzytkownicy;
foreach($uzytkownicy as $id => $dane)
{
if($dane['login'] == $login && $dane['haslo'] == $haslo)
{
// O, jest ktos taki - zwroc jego ID
return $id;
}
}
// Jeżeli doszedłeś a tutaj, to takiego użytkownika nie ma
return false;
}
session_start();
if(!isset($_SESSION['uzytkownik']))
{
$_SESSION['uzytkownik'] = 0;
}
if($_SESSION['uzytkownik'] > 0)
{
// Ktos jest zalogowany
echo 'Witaj, '.$uzytkownicy[$_SESSION['uzytkownik']]['login'].' na naszej stronie!';
}
else
{
// Niezalogowany
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(($id = czyIstnieje($_POST['login'], $_POST['haslo'])) !== false)
{
$_SESSION['uzytkownik'] = $id;
echo 'Dziekujemy, zostales zalogowany! <a href="index.php">Dalej</a>';
}
else
{
echo 'Podales nieprawidlowe dane, zegnaj! <a href="index.php">Dalej</a>';
}
}
else
{
}
}
?>
perms.php <=prawa grup do skryptow
<?php
global $PERM;
$PERM['skrypt1.php'] = 'admin';
$PERM['skrypt2.php'] = 'user';
$PERM['skrypt3.php'] = 'user';
?>
grupy:
<?php
$grupy = array(1 =>
array('login' => 'admin', 'grupa' => 'admin'),
array('login' => 'janek', 'grupa' => 'user'),
array('login' => 'magda', 'grupa' => 'user')
);
plik auth.php ktory ma byc dołączany na początku skryptu. W tym pliku sprawdzane jest czy uzytkownik ma dostep do pliku.
<?
session_start();
include 'users.php';
include 'groups.php';
include 'perms.php';
$file = basename($_SERVER[PHP_SELF]);
global $grupy;
global $GrupaT;
foreach($grupy as $grupa => $da)
{
if( $uzytkownicy[$_SESSION['uzytkownik']]['login'] == $da['login'] )
{
$GrupaT = $da['grupa'];
return $GrupaT;
}
}
function spr($grupa, $plik)
{
if($PERM[$plik]==$grupa)
{
return;
}
else{ echo"Nie masz dostepu do tego pliku";
}
}
spr($GrupaT,$file);
?>
Na razie nie jest to kompletna autoryzacja, ale i ona nie działa. Dostep do skryptu skrypt1.php powinien miec dostep tylko admin wiec sprawdzam czy przypisana grupa do pliku skrypt1.php zgadza sie z grupą do jakiej nalezy admin jesli tak to return i funkcja się przerywa i admin widzi skrypt jesli zalogowany jest ktos inny kto chcial otworzyc skrypt1.php powinien wyswietlic sie komunikat "Nie masz dostepu do tego pliku". Niestety obojetnie na ktore z 3 kont sie zaloguje i otworze skrypt1.php to skrypt i tak sie wykonuje. Jakis podpowiedzi, rady ?