Ten mój kod to tylko przykład...
Ale jak chcesz już skorzystać to rób to co ci napiszę.
Będe się opierał o ten twój przykład i o pewnien skrypt logowania też z tej stronki ( pewnie go tez używasz
http://www.strefaphp.net/artykul36.html )
Napoczątku trochę zmodyfikujemy skrypt dodając jeszczen kolumne uprawnienie.
CREATE TABLE `users` (
`nr` int(20) NOT NULL AUTO_INCREMENT,
`login` varchar(20) NOT NULL DEFAULT '',
`gg` varchar(10) NOT NULL DEFAULT '',
`skad` varchar(30) NOT NULL DEFAULT '',
`plec` varchar(20) NOT NULL DEFAULT '',
`haslo` varchar(20) NOT NULL DEFAULT '',
`data` varchar(20) NOT NULL DEFAULT '',
`uprawnienia` varchar(20) NOT NULL DEFAULT '',
PRIMARY KEY (`nr`)
) TYPE=MyISAM AUTO_INCREMENT=33 ;
Jeżeli użytkownik w tej kolumnie będzie miał wartość 1 to znaczy że jest administratorem, a jak 0 to jest szarym, zwykłym użytkownikiem.
Następnie posłużę się skryptem z mojego linku by przy logogwaniu do sesji wrzucić wartość kolumny 'uprawnienia'.
<?php
/* Gdyby, ktoś(czytaj zły niedobry hacker) popsuł apacha tak, że nie widzi plików .htaaccess to musimy sami upewnić s
ię czy plik został tylko includowany */
if(eregi("config.php",$_SERVER['PHP_SELF']) OR
eregi("config.php",$_SERVER['QUERY_STRING']))
/* Klucz XOR dla szyfrowania cookie dowolny ciąg znaków - musi mieć dokładnie 64 znaki
2x hash md5 */
$_CONFIG['kxc'] = "a523d703f908dd69e02db64ec35d07315f4c49ab3cacad14a97304b02f2fbb09";
/* Dane potrzebne do zalogowania sie do bazy MySQL - zastap swoimi */
$_CONFIG['MySQL']['host'] = "localhost";
$_CONFIG['MySQL']['user'] = "strefaphp";
$_CONFIG['MySQL']['pass'] = "super tajne haslo, ktore zawiera znaczki i cyfry #8 (no i jest dlugie)";
$_CONFIG['MySQL']['base'] = "strefaphp";
/* jesli nie mamy swojej sesji to ja zakladamy */
if(!isset($_SESSION['sesja'])) {
$_SESSION['sesja'] = '';
}
/* Łączymy sie z Bazą Danych, jesli coś jest nie tak - wyskakuje nam "przyjazny" komunikat */
@mysql_connect($_CONFIG['MySQL']['host'], $_CONFIG['MySQL']['user'], $_CONFIG['MySQL']['pass']) or
die('<html> <head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
<title>Err0r</title>
<style type="text/css">
body { background: #FFFFFF; }
div { font-family: Verdana, Arial; font-size: 12px; color: #000000; }
</style>
</head>
<body>
<div>
Przepraszamy, wystąpiła chwilowa awaria serwisu.<br>
<br>
<b>Nie mogę połączyć się z serwerem bazy danych.</b><br>
<br>
Proszę powiadom <a href="mailto:ustek@ustek.one.pl">Webmastera</a>.
</div>
</html>');
/* To samo co wyżej, z tym, że teraz wybieramy bazę */
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
<title>Err0r</title>
<style type="text/css">
body { background: #FFFFFF; }
div { font-family: Verdana, Arial; font-size: 12px; color: #000000;}
</style>
</head>
<body>
<div>
Przepraszamy, wystąpiła chwilowa awaria serwisu.<br>
<br>
<b>Nie mogę odnaleść bazy Danych.</b><br>
<br>
Proszę powiadom <a href="mailto:ustek@ustek.one.pl">Webmastera</a>.
</div>
</html>');
function login() {
/* Pewnie sie zastanawiasz czemu nie globalizujemy tez potrzebnej nam tablicy $_P
OST - otórz ona już jest globalizowana - automatycznie */
/* Niezalogowany dopuki nie udowodni, że jest tym za kogo się podaje */
$zalogowany = false;
/* W pierwszej kolejności będą brane pod uwage dane z cistek, potem sesji, na koń
cu z formularza. Ta część funkcji ma ustalić, skąd pochodzą dane, i upewnić się,
że owe dane są zaszyfrowane w md5. strtolower przy loginie, ma za zadanie sprawić
, by wielkość liter nie miała znaczenia - ale tylko przy loginie */
if(isset($_COOKIE["dane"])) { $dane = $_COOKIE["dane"]^$_CONFIG['kxc'];
$login = substr($dane, 0
, 32
); $metod = "cookies";
}
elseif(isset($_SESSION['login']) AND
isset($_SESSION['haslo'])) { $login = $_SESSION['login'];
$haslo = $_SESSION['haslo'];
$metod = "session";
}
elseif(isset($_POST['login']) AND
isset($_POST['haslo'])) {
$haslo = md5($_POST['haslo']); $metod = "post";
}
/* Jeśli istnieje $metod - czyli jeśli dane zostały dostarczone, to sprawdzamy czy są poprawne. Możemy spo
kojnie wstawić zmienne $login i $haslo do zapytania SQL bo obydwie zmienne, zawsz
e i wszędzie wyglądać będą tak samo dwa ciągi zawierające 32 znaki czyli 2x hash
md5
*/
$query = mysql_query("SELECT * FROM `users` WHERE `user`='".$login."' AND `pass`='".$haslo."';"); /* Jeśli baza danych zwróciła tylko jeden wynik to haslo i login zostały odnalezi
one zatem $zalogowany = true, ale oprócz tego musimy sie upewnić, że dane, które
wykożysaliśmy nam nie przepadną */
$zalogowany = true;
/* Jeśli dane nie pochodzą z sesji, to umieszczamy je w sesji + zapisujemy w sesj
i info, ktore może się do czegoś przydać, np nick */
if($metod <> "session") {
$_SESSION['login'] = $wiersz['user'];
$_SESSION['haslo'] = $wiersz['pass'];
$_SESSION['nick'] = $wiersz['nick'];
#sesja uprawnienia
$_SESSION['uprawnienia'] = $wiersz['uprawnienia'];
/* Jeśli dane pochodzą z formularz i dodatkowo gość poprosił o zapamiętanie danyc
h na przyszłość to dodatkowo umieszczamy potrzebne (zaszyfrowane) dane w cisteczkach */
if($metod == "post" AND
isset($_POST['pamietaj']) AND
$_POST['pamietaj'] == "ok") { $dane = ($login.$haslo)^$_CONFIG['kxc'];
setcookie ("dane", $dane,time()+3600
*24
*365
); /* straci ważnosc za rok */
}
}
}
}
return $zalogowany;
}
/* Wylogowanie, polega na zniszczeniu danych, które znajdują sie w sesji i jeśli
są w cistakach to tam też sprzątamy */
function logout() {
if(isset($_COOKIE["dane"]))
unset($_SESSION['login']); unset($_SESSION['haslo']); unset($_SESSION['nick']); ?>
Teraz wystarczy w panelu sterowania sprawdzić czy użytkownik ma w sesji uprawnie o wartosci 1 czy 0
<?php
#panel administarcyjny
if($_SESSION['uprawnienia'] == 1)
{
#panel administracyjny zwykły użytkownik nie ma tu dostępu
}
else
{
echo 'nie jestes adminem wiec wynocha'; }
?>
Tak to miejwięcej wygląda. Ja usiebie mam secjalny skrypt do ustalania uprawnien ( mam 10 rodzajów uprawnien nie tylko jedne) , u ciebie to chyba nie będzię konieczne bo chyba tylko ty bedzięsz adminem więc bezproblemu tylko sobie w bazie danych możesz ustawić '1'
W skryptach mogłem popełnić jakąś literówkę....