Admin vs user
Admin vs user
Caute vsetci, potrebujem napisat v php funkciu ktora by rozlisovala ci sa prihlasil admin alebo user, mame vyriesene prihlasenie cez session, kde premenne sa posielaju cez $_POST (formular), Predstavujem si to tak ze v tabulke bude stlpec admin, a ak bude hodnota 1 tak sa prihlasil admin a ak bude hodnota 0 tak sa prihlasil user, Zatial mi vsetci odmietali pomoct, trapim sa s tym dostatocne dlho ...
-
t0m4s3
Admin
- Príspevky: 18096
- Registrovaný: 14 jún 2004, 18:35
- Bydlisko: Martin SR, Brno CZ
- Kontaktovať používateľa:
a co ma byt vystupom tej funkcie? Cislo alebo meno?
kazdopadne bude to nejak takto
mozno su tam "kozmeticke chyby" ale hruby zaklada tam je. Troska viac treba rozpisat problem 
kazdopadne bude to nejak takto
Kód: Vybrať všetko
function userlevel($kto)
{
$sql = 'SELECT id FROM tabulka WHERE username = "'.$kto.'"';
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$id = $row['id'];
return $id;
}-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
najprv urobis dump do databazy a zadefinujes si konstatny ktore budu obsahovat dolezite veci. U_USERNAME, U_USERID, U_USERGROUP a potom neurobis nic ine len zavolas tuto funkciu
Kód: Vybrať všetko
function userIsAdmin()
{
if (U_USERGROUP===1)
{
return true;
}
return false;
ok chalani nesklamali ste ale dostalo sa mi rychlejsej pomoci.. a hlavne jednoduchsej, aha
toto volam v jednoduchosti je krasa
Kód: Vybrať všetko
$result = mysql_query("SELECT * FROM user WHERE user='" .
$_SESSION['user']
. "'");
$row = mysql_fetch_array( $result );
if($row['admin'] == '1')
{
kod pro admina
}-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
imho hovadina. Tak ked robim nejaku vacsiu aplikaciu, tak si pre jej beh vytvorim dobre podmienky. nebudem predsa posielat select na databazu ked chcem vediet ci je user admin alebo nie. preto ho poslem raz, pri updatovani sessions zadefinujem konstanty a vyrobim si funkciu ktora bude univerzalna a nie zakazdym pisat to iste...
Mastermind prepac, ale tvoja rec je ako keby si na mna hovoril po madarsky (madarcinu neovladam), nerozumiem ti s toho ani mäkke F... ale mas pravdu v tom ze je to zdlhave a pomale aj ked lahke na pochopenie. Ty mi hovoris aby som si vytvoril konstanty U_USERNAME a U_USERID... mno to by ma zajimalo naco mi to bude. To co pise tomase, po tom ako som si kusok precital, chapem... on tam pise ako dostat z db ci je $id=1 alebo 0. Neskor je lahke zavolat tuto funkciu a napisat je to aj rychle aj jednoduche. A co sa tyka tvojho, napisem ti to strucne a skus povedat ci je to to co si mi tym chcel povedat....
To U_USERGROUP je kludne stlpec admin, vyberem si udaje z db do pola a s neho vycucnem admin 1 ci 0 a porovnam z konstantou... ono medzi tym co hovorim ja a co hovoris ty je jediny rozdiel.. ja to porovnavam rovno a ty vyuzivas konstantu... myslim si ze zbytocne tam este davat tu konstantu nie je to este tri.
Kód: Vybrať všetko
if($id==1) {
echo "kod pre admina";
}To U_USERGROUP je kludne stlpec admin, vyberem si udaje z db do pola a s neho vycucnem admin 1 ci 0 a porovnam z konstantou... ono medzi tym co hovorim ja a co hovoris ty je jediny rozdiel.. ja to porovnavam rovno a ty vyuzivas konstantu... myslim si ze zbytocne tam este davat tu konstantu nie je to este tri.
Aha, to je vcelku dobry napad, preco to len nepovedal hned na zaciatku?
zacal som na niecom robyt.... Je mi jasne ze sa to bude potom pouzivat neako takto ale nenako mi nejde do hlavy ako bysom to mal z db vybrat. Tipujem ze asi pomocou a este asi budem musiet upravit jeden terajsi riadok na $data = mysql_query("SELECT * FROM `users` WHERE `username`='".$_SESSION[username]."' AND `password`='".$_SESSION[password]."' AND `admin`='".$_SESSION[admin]."'"); //myslim si za takto to dostanem do session
OK teraz to mam v session a viem ako s tym budem pracovat.. ale ako tam zapojit tie konstaty ked uz ich mam definovane?
Kód: Vybrať všetko
if($_SESSOIN['admin']=="1"){
echo"co chcem zobrazovat";"
}Kód: Vybrať všetko
mysql_fetch_array($data)OK teraz to mam v session a viem ako s tym budem pracovat.. ale ako tam zapojit tie konstaty ked uz ich mam definovane?
konstanty si nevsimaj 
popisem to principialne:
popisem to principialne:
Kód: Vybrať všetko
//prihlasovanie.... (poznamka: bfu = bezny franta uzivatel)
--------------------------------------------------------------------
//mam meno a heslo (asi z formulara) a v DB tabulku s nasledujucimi stlpcami (meno, heslo, prava = admina alebo bfu)
mysql_query(najdi mi uzivatela s menom=meno a heslom=heslo);
if(uzivatel existuje)
{
session_start()
naplnim si potrebne udaje (meno, ....) do session
if(je admin) $_SESSION["admin"]=true;
else $_SESSION["admin"]=false;
}
a idem/presmerujem na nejaku stranku co sa ma zobrazit
//stranka
----------------------------
if($_SESSION["admin"])
{
kod pre admina
}
else
{
kod pre bfu
}ehm toto bol princip fungovania ..VIP721 napísal:a toto mam upne nahradit mojim prihlasovanim alebo len dopisat za prihlasovanie?
proste: prihlasovaci formular -> overenie prihlasenia -> naplnenie session -> stranka -> stranka -> ...
to ako robit formular, overenie, naplnenie session uz musis vediet ty .. ja nepoznam strukturu tvojej db ....
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
ja do session ukladam len oid prihlasenia. prihlasenych uzivatelov logujem do databazy. ak sa raz uzivatel prihlasi, mrsknem ho do tabulky a updatujem kym je online. samozrejme tabulku si precistujem on the fly.
V hlavicke hodim select na databazu, zistim ci je uzivatel prihlaseny. Ak ano updatnem mu udaje a zadefinujem si konstanty ktore mi treba (username, id, opravnenia) a pak pracujem len s nimi.
//add: len doplnim dovod ukladania sessions do databazy. autentifikacia je robena cez ldap, takze si stale o userovi ulozim dolezite informacie a len updatujem tuto session. Nechcel som pri kazdom refreshi posielat ldap request.
V hlavicke hodim select na databazu, zistim ci je uzivatel prihlaseny. Ak ano updatnem mu udaje a zadefinujem si konstanty ktore mi treba (username, id, opravnenia) a pak pracujem len s nimi.
//add: len doplnim dovod ukladania sessions do databazy. autentifikacia je robena cez ldap, takze si stale o userovi ulozim dolezite informacie a len updatujem tuto session. Nechcel som pri kazdom refreshi posielat ldap request.
-
programator
Medium Star
- Príspevky: 475
- Registrovaný: 18 apr 2005, 8:31
- Bydlisko: Papua new Guinea
- Kontaktovať používateľa:
IMHO tot neni velmi bezpecne, lebo staci len pozmenit session a zrazu si admin...bud teda ako mastermind pisal logovat do databazy alebo si zakazdym overit ci je skutocne admin...gwixt napísal:konstanty si nevsimaj
popisem to principialne:Kód: Vybrať všetko
//prihlasovanie.... (poznamka: bfu = bezny franta uzivatel) -------------------------------------------------------------------- //mam meno a heslo (asi z formulara) a v DB tabulku s nasledujucimi stlpcami (meno, heslo, prava = admina alebo bfu) mysql_query(najdi mi uzivatela s menom=meno a heslom=heslo); if(uzivatel existuje) { session_start() naplnim si potrebne udaje (meno, ....) do session if(je admin) $_SESSION["admin"]=true; else $_SESSION["admin"]=false; } a idem/presmerujem na nejaku stranku co sa ma zobrazit //stranka ---------------------------- if($_SESSION["admin"]) { kod pre admina } else { kod pre bfu }
cookies a session je imho daco ine (koniec koncov session funguje aj ked su cookies vypnutet0m4s3 napísal:takto sa "hackovalo" phpbb az do verzie 2.16, iba si si upravil cookies na ID = 2 co je default admin id a voala
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17