Autor | Zpráva | ||
---|---|---|---|
JardaK Profil * |
#1 · Zasláno: 30. 8. 2007, 20:31:32
Ahoj, potřeboval bych poradit
dělám stránky, kde je menu kompletně načítáno z databáze. Každá položka menu má v databázi nastavené práva komu se zobrazí a komu ne(Admin, Intranet, Neprihlasen) a stejně tak i uživatelé mají nastavena ve svém řádku tabulky USERS práva. Nevím jak zajistit, aby se při přihlášení uživatele pod jménem a heslem načetlo z databáze USERS oprávnění a nastavilo se jako SESSION. Pak by se menu postavilo samo příkazem "SELECT * FROM menu WHERE opravneni="$_SESSION" takto mi to nefunguje:
Díky moc |
||
Alphard Profil |
#2 · Zasláno: 30. 8. 2007, 21:02:47
mysql_connect('mysql.wz.cz','xxxxx','xxxxx');
mysql_select_db("xxxxxx"); $sql = "select heslo, opravneni from users where nick= '$nick'"; $res = mysql_query($sql); if ($res && mysql_num_rows($res) && ($heslo)==mysql_result($res,0)) { $_SESSION["opravneni"]=$opravneni; kdes sebral $opravneni? |
||
JardaK Profil * |
#3 · Zasláno: 30. 8. 2007, 21:11:47
To bych právě potřeboval načíst z tabulky USERS a nacpat ho do session, bohužel netuším jak.... toto je jeden z marných pokusů....
$opravneni tam samozřejmě není, to by musel vyplnit user do formuláře spolu se jménem a heslem a to je blbost... |
||
Alphard Profil |
#4 · Zasláno: 30. 8. 2007, 21:14:23
sorry, ale nechápu tvůj přihlašovací systém
to by musel vyplnit user do formuláře spolu se jménem a heslem a to je blbost zadávat při přihlášení jméno a heslo je podle mě běžné |
||
JardaK Profil * |
#5 · Zasláno: 30. 8. 2007, 21:36:03
Ne já myslel že by musel vyplňovat nějaké pole oprávnění.... aby tam mohlo být to $opravneni, na které jsi se ptal, kde jsem vzal...
Tak znovu... Mam tabulku USERS, která má sloupce: |nick| |heslo| |opravneni| druhou tabulku MENU a ta má sloupce: |odkaz| |link| |opravneni| a potřebuji nějak docílit toho aby se po vyplnění jména a hesla do Login formuláře nastavila SESSION proměná na hodnotu opravneni u příslušného USERa. Př. v databázi mám Jméno: Tonda Heslo : tajne opravneni: admin Jméno:Franta Heslo: Tajné oprávnění: intranet a já potřebuji, aby když se přihlásí Tonda s heslem tajne, aby se SESSION nastavila na admin a pokud se přihlásí Franta, tak aby se SESSION nastavila na intranet a pokud bude user nepřihlášen, tak aby byla SEESION nastavena jako neprihlasen a podle toho jaká bude nastavena SESSION se mi načtou položky menu. Doufám, že už se mi podařilo můj problém trochu osvětlit |
||
Alphard Profil |
#6 · Zasláno: 30. 8. 2007, 22:15:22 · Upravil/a: Alphard
$result = mysql_query ("select opravneni from USERS where nick = '$nick' and heslo = '$heslo'");
if (!$result) echo mysql_error(); else { if (mysql_num_rows ($result) > 0) list ($_SESSION['opravneni']) = mysql_fetch_row ($result); else $_SESSION['opravneni'] = "neprihlasen"; } |
||
JardaK Profil * |
#7 · Zasláno: 30. 8. 2007, 23:29:46
Díky,
ale ještě to není ono... nyní když chci přejít na stránku, na které požaduji mít nastavenou SESSION admin na to, abych ji mohl prohlížet <?php session_start(); if (!$_SESSION ["admin"]) { Header("Location:login.php?back=$PHP_SELF"); exit; } ?> tak povyplnění jména a hesla se mi akorát refreshne stránka s loginem. Když je na zaheslované stránce <?php session_start(); if (!$_SESSION ["opravneni"]) { Header("Location:login_ad.php?back=$PHP_SELF"); exit; } ?> Tak vše funguje, po loginu se objeví požadovaná stránka. Tudíž se asi pravděpodobně nastavuje pouze jedinná session a to je "opravneni" |
||
Alphard Profil |
#8 · Zasláno: 30. 8. 2007, 23:34:13
špatně jsi to pochopil, opravnení se ukládá jako hodnota do $_SESSION['opravneni'], možná by to chtělo trochu projít pár článků s popisem práce s poli
if ($_SESSION ["opravneni"] != "admin") { |
||
JardaK Profil * |
#9 · Zasláno: 30. 8. 2007, 23:50:47
Paráda,
už mi to funguje =o) díky moc Měj se |
||
JardaK Profil * |
#10 · Zasláno: 31. 8. 2007, 15:15:23
Tak jsem narazil na další problém....
nakonec jsem použil pro SESSION hodnoty: 1 = nepřihlášen 2 = intranet 3= intranet 2 úrovně 4 = admin sloupec opravneni v tabulce menu používá stejné hodnoty ale SQL příkaz, kterým jsem si byl téměř jistý že bude fungovat mi nejde
Chtěl jsem tím docílit toho, aby přihlášený uživatel viděl vše co nepřihlášený nebo přihlášený s menšími právy + to co je navíc pro něj. Když jsem jen tak zkusil
abych zjistil, co se do SESSION uložilo, vyplivlo to na mě pouze Array. Tuším že tady je problém, že to porovnává jestli je nějaké číslo <= Array |
||
Alphard Profil |
#11 · Zasláno: 31. 8. 2007, 15:44:28 · Upravil/a: Alphard
pouze echo $_SESSION vypíše array, protože to je pole, musí se použít $_SESSION['neco'], tedy upřesnit, co tě zajímá
pro vypsání všech hodnot pole lze použít třeba print_r($_SESSION); |
||
Alphard Profil |
#12 · Zasláno: 31. 8. 2007, 15:52:40
Tak jsem narazil na další problém....
nakonec jsem použil pro SESSION hodnoty: 1 = nepřihlášen 2 = intranet 3= intranet 2 úrovně 4 = admin takže bude $_SESSION['opravneni'] = 2; // nebo 1, 3, 4 $sql = "SELECT * FROM menu WHERE opravneni < = " . $_SESSION['opravneni']; btw: v závorkách to bylo proč? |
||
JardaK Profil * |
#13 · Zasláno: 31. 8. 2007, 18:03:12
Takto mi to také nejde...
pro zjednodušení jsem vložil jen script pro jednu položku menu a to je sekce O nás, která mám mít pod sebou načtené odkazy 2 úrovně z tabulky section. Každá sekce má svou tabulku, tudíž tady se odkazuji na tabulku "onas" Hází mi to tento error:
|
||
Alphard Profil |
#14 · Zasláno: 31. 8. 2007, 18:22:27
$resultsnumber = mysql_numrows($result);
co to má dělat? 1. tato funkce neexistuje, asi myslíš mysql_num_rows(); 2. $resultsnumber nikde nepoužíváš zkontroluj dotaz: $sql = "SELECT * FROM onas WHERE opravneni < = " . $_SESSION['opravneni']; echo $sql; |
||
JardaK Profil * |
#15 · Zasláno: 31. 8. 2007, 18:36:22
no netušim fakt ....
schválně jukni co mi to tam vyvádí http://www.webcheck.wz.cz SESSION se podle mě nastavuje dobře, ale z nějakého důvodu to nenačte to menu.... |
||
JardaK Profil * |
#16 · Zasláno: 31. 8. 2007, 19:13:02
<?php Tento error: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /3w/wz.cz/w/webcheck/index.php on line 128 je však zvláštní, že než jsem začal řešit ta různá práva tak to fungovalo.... jednotlivé odkazy se z databáze pěkně vyrovnaly pod sebe do tabulky.... |
||
Alphard Profil |
#17 · Zasláno: 31. 8. 2007, 20:23:37
$sql = "SELECT * FROM onas WHERE opravneni <= " . $_SESSION['opravneni'];
echo"$sql"; $result = mysql_query ($sql); if (!$result) echo mysql_error(); zkus to takhle, mezi <= nemá být mezera, předtím jsem si toho nevšiml |
||
JardaK Profil * |
#18 · Zasláno: 31. 8. 2007, 22:25:34
Tím to také není, píše to pořád stejný error.
Chyba je někde v tom vypisování, pořád to hází Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource |
||
JardaK Profil * |
#19 · Zasláno: 31. 8. 2007, 23:03:17
SELECT * FROM onas WHERE opravneni <=You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
||
nightfish Profil |
#20 · Zasláno: 31. 8. 2007, 23:06:51
JardaK
proměnná $_SESSION['opravneni'] je z nějakého důvodu prázdná... |
||
JardaK Profil * |
#21 · Zasláno: 31. 8. 2007, 23:11:17
No je tam problém v nějaké maličkosti, nejspíše syntaxe, protože když jsem u uživatelů zvýšil hodnoty oprávnění o 1 a místo <= použil pouze <, tak to funguje =o)
|
||
krteczek Profil |
#22 · Zasláno: 1. 9. 2007, 07:28:09
co ti vypíše echo $_SESSION['admin']?? podle mne tam máš string a né integer, který požaduješ v dotaze :-)
vycházím z tohoto: if ($_SESSION ["opravneni"] != "admin") {... takžev té session asi nebude integer ;-) |
||
Časová prodleva: 17 let
|
0