Autor Zpráva
josstar
Profil
Mám udělaný přihlašování pomoci mysql a trochu i sessions. Do tabulky ukládam vstupní udaje a md5 heslo. Sesssion mám na odhlašování, neco jako níz.

<?php
session_start();

//ověření hesla
if ( $_SESSION['authuser'] != 1); {
echo "Bohužel nemáte dostatečné oprávnění k prohlížení této stránky!";
exit();
}
?>

Web s uživatelema se mi trochu rozrsostl a uvažoval jsem jak udělat skupiny. Jestli dávat do jedne tabulky kompletní prihlasovaci udaje s právy a uživatele pak testovat nějak pomoci sessions. Jak to řešíte? Thx
Ni7R0
Profil
Nabízí se buď práva dát do další tabulky (pokud může mít práv uživatel víc) a tu propojit pomocí relace nebo to všechno dávat do jednoho řádku v databázi (pokud jsou tam jednoduché skupiny se stejnými právy - administrátor/moderátor/user). Informaci o právech potom přenášet jako jeden z prvků pole sessions.
josstar
Profil
To je zajímavé. Ale když dám prava do samostatné tabulky tak neumim udělat tu relaci :(( nebo to provázaní tabulek, jestli se tomu tak říká. Jak to myslíš s tima skupinama se stejnými právy. Já to mám zatím udělané takhle:


CREATE TABLE `uzivatele` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`jmeno` VARCHAR( 32 ) NOT NULL ,
`heslo` VARCHAR( 32 ) NOT NULL ,
`mail` VARCHAR( 64 ) NOT NULL ,
`prava` TINYINT NOT NULL ,
UNIQUE (`jmeno` , `mail` )
) ENGINE;


já (admin): (1) - přístup na všechno, tedy i na možnosti přidání aktualit určeného právy redaktora
redaktor: (2) - po přihlášení bude moci přidávat např. jen články
zastupitelstvo: (3) - po přihlášení moci přidávat jen např. projednávané skutečnosti na obecním úřadě

pak si poupravim tohle. jestli tomu dobre rozumim, pozmenim admin a nazev tabulky , $login i $res
tim ziskam jaky čislo prava mám vybrany

$query = "select admin from users where login = '$login'";
$result = mysql_query($query);
if ($result && mysql_num_rows($result)) {
$res = mysql_$result($result,0,0:
} else $res = "n";
if ($res == "y") {
//user is admin
}


ty cisla (viz više)jsou prava uloženy v tabulce spolu s nickem atp. Redaktoru a clenu zastupitelstva je vice. A ja bych s vasi pomoci potreboval zajistit, aby se pro registrovanyho uzivatele zobrazila podoba stránek dle práva v tabulce

u na stránce loginu, kde ho zpracovavam mám uloženy sessions o prihlásenem nějak taktonc:


$_SESSION['prihlasen'] = 1;
$_SESSION['login'] = $Vysledek['jmeno'];


Na "tajné" stránce mám rozvynuto neco jako toto:


if(!isset($_SESSION['prihlasen']) and @$_SESSION['prihlasen']!=1){
echo "Jen pro prihlasene";
exit;
}
?>
šifra jako blázen :)))

Ale jak z toho ven? Snad budete vedet jak to myslim. pokud ne tak mi poradte jinak ale zase se mi to mozna nebude chtit prekopavat uplne znova ;)
diky za rady
josstar
Profil
Poradi mi nekdo????? prosím
splite
Profil
Nechápu přesně ten problém...

Ta query je totiž na zcela jinou tabulku než kterou jste dal k nahlédnutí...



Takže trochu hádám:
Do session si uložte i sloupec "práva"

$_SESSION['prava'] = $Vysledek['prava'];

pokud na stránku chcete pustit jen třeba administrtátora, tak pomocí "šifry jak blázen" ( ;-) ) to uděláte takhle:


if(!isset($_SESSION['prihlasen']) or $_SESSION['prava'] != 1){
echo "Jen pro Administrátora";
exit;
}



Případně jen Administrátora a Redaktory

if(!isset($_SESSION['prihlasen']) or $_SESSION['prava'] > 2){
echo "Jen pro Administrátora nebo Redaktory";
exit;
}


Jen pro Redaktory

if(!isset($_SESSION['prihlasen']) or $_SESSION['prava'] != 2){
echo "Jen pro Administrátora nebo Redaktory";
exit;
}


atd...

Rád bych vás navíc upozornil že toto řešení postrádá jakoukoliv absenci ochrany před útokem XSS -> session stealem.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0