Stránka 1 z 2
PhP-admin.prostředí
Napsal: pon 7. lis 2011, 18:34
od twinky
Dobrý den,
chtěl bych se zeptat, zda-li funguje nějak napsat v PhP to, že když já jako administrator stránky se přihlásím na web ( dříve udělaná registrace přes databázi) se mi zobrazí například nějaké tlačítko (např.:vlož nového uživatele do databáze - registrace),ale pouze aby to tlačítko jsem viděl já jako admin a né jiní uživatelé ( něco jako, že bych se přihlásil pod určitým,jednotným jménem a heslem a vyhodilo by mi to skryté funkce stránky,které by nikdy jiný nepřihlášený/normální přihlášený člověk neviděl, pouze já.) děkuji .. viz příloha
Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 18:56
od OndraSter
Samozřejmě, že jde.
V databázi si přidej další sloupec "oprávnění" apod. Když bude v 0, tak je to obyč uživatel a pokud je v 1, tak je to admin. A pokud je to admin, tak to navíc zobrazí to admin menu.
Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 19:55
od twinky
ok takže tam mám tabulku uzivatele v te databazi ( id, mail, heslo , atd.. a tam hodim to oprávnění jo přidám? )
jak tohle pak doupravím prosím ( je to pro odkrytí té části pro uživatele)
<?php session_start();
if (isset($_SESSION['id']))
echo "Jste přihlášen";
?>
Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 20:11
od Exp
Kód: Vybrat vše
function check_rights() {
$user_rights_query = mysql_query("SELECT opravneni FROM uzivatel WHERE id = $_SESSION['id']");
$user_rights = mysql_fetch_array($user_rights_query['opravneni']);
return $user_rights;
}
Tahle funkce ti vrátí oprávnění přihlášeného uživatele. Nevím přesně jak máš udělanou databázi, takže sloupec "opravneni" a tabulku "uzivatel" jsem si vymyslel.
Pak stačí dál operovat s typem oprávnění, např.:
Kód: Vybrat vše
if(check_rights() == 1) {
include 'jine_menu.php';
}
Samozřejmě je potřeba kontrolovat uživatelova práva na každé stránce, kde se může vyskytovat kód určený pouze pro adminy.
Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 20:15
od twinky
ok.. a chtěl bych se zeptat, nešlo by to nějak dosatit místo toho id --- id toho uživatele pro koho chci ten obsah aby viděl?
Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 20:20
od twinky
:-/ sakra nejde mi vytvořit sloupeček opravneni
mám to uzivatele ----> mail,id,heslo,jmeno a chci tam dát to provaneni a nejde to

Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 20:31
od Exp
Uff, mám tam kravinu. Pokud chceš udržovat hodnotu "opravneni" v session, musíš jí zaregistrovat.
Nevím jak máš udělané přihlašování, ale je potřeba v něm zjistit přihlášeného uživatele a především jeho práva - vytáhnout dotazem z databáze. Pak si můžeš zaregistrovat do session proměnnou "opravneni".
Kód: Vybrat vše
session_start();
session_register("opravneni");
$_SESSION["opravneni"]=mysql_fetch_array(mysql_query("SELECT opravneni FROM uzivatel WHERE id_uzivatele = {//sem dosadit id aktuálně přihlášeného uživatele - nevím jak máš udělané přihlašování, nemůžu sloužit}"));
Pomocí čeho spravuješ databázi? Pokud chceš přidat sloupeček, je třeba použít ALTER TABLE. Silně ale doporučuju phpMyAdmin, pokud ho dosud nepoužíváš. Tam jde přidat sloupeček velice jednoduše klikacím způsobem.
Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 20:32
od twinky
fakt? používám PhPMyAdmin.... endora.cz prosím jak přidat ten sloupeček?
tabulka "uzivatele" sloupce "id" "login" "heslo" "email"
Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 20:50
od Exp
Otevřeš si tabulku, nahoře záložka struktura, někde v dolní části je "Přidat 1 slupců na konci tabulky" (upravitelné) a tlačítko přidat. Pak si specifikuješ sloupec a je to. Endora může mít ale phpmyadmina upraveného, tak to nemusí přesně odpovídat.
Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 21:13
od twinky
ok a vyplnit jak, něco speciálně jinak?
Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 21:24
od Exp
V tomhle případě může být klidně takhle.
Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 21:26
od twinky
Exp píše:V tomhle případě může být klidně takhle.
takže pole pouze přepíšu na opravneni
Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 21:28
od twinky
ok tak mám další sloupeček
tabulka: uzivatele
sloupce: id login heslo email opravneni(hodnota 0)
ted co?
Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 21:31
od Exp
Přesně tak. Hodnotu (0 nebo 1) vyplníš podle toho, o jakého uživatele se jedná. Výstižnější by možná bylo nazvat pole jako "administrator", pak by hodnota 0 a 1 dávala větší smysl, ale je to fuk.
Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 21:38
od twinky
ok mám napr.
uzivatel1 opravneni 0
uzivatel2 opravneni 0
admin opravneni 1?
a co pak?
Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 21:39
od Exp
Dej mi sem část kódu, kde řešíš přihlášení uživatele, bez toho ti konkrétní radu (= přímo kód), napsat nemůžu.
Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 21:42
od twinky
Kód: Vybrat vše
<?php session_start();
session_register("opravneni");
$_SESSION["opravneni"]=mysql_fetch_array(mysql_query("SELECT opravneni FROM uzivatel WHERE id_uzivatele = {8}"));
echo '<td colspan="2" align="left"><a href="registrace.php"><font color="white"><strong>Registrace zde</font></a></td></tr>';
?>
název tabulky: uzivatele
Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 21:43
od Exp
Tohle ne. Jak ověřuješ, zda uživatel zadal do formuláře správný login a heslo (tzn. první krok, než se dostane do nějaké administrace)?
Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 21:46
od twinky
Kód: Vybrat vše
<?php
include "./connect.php";/* připojení k databázi */
$login = mysql_real_escape_string($_POST["nick"]);/* nick zadaný ve formuláři pro přihlašování */
$heslo = mysql_real_escape_string($_POST["heslo"]);/* heslo zadané ve formuláři pro přihlašování */
$md5heslo = md5($heslo);/* Pomocí funkce md5() heslo zahashujeme */
/* — DOTAZ K MYSQL PRO OVĚŘENÍ PŘIHLAŠOVACÍCH DAT — */
$dotaz = mysql_query("select * from uzivatele where login = '$login' and heslo = '$md5heslo'");
$overeni = mysql_num_rows($dotaz);
$row = mysql_fetch_array($dotaz);
if($overeni == 1) {
session_start();
$_SESSION['login'] = stripslashes($login);
$_SESSION['id'] = $row["id"];
header("Location: admin.php");
die();
} else {
echo"Zadali jste špatné uživatelské jméno nebo heslo";
}
echo'<p><a href="index.php"><font color="white">Přejít na hlavní stránku</font></a></p>';
?>
Re: PhP-admin.prostředí
Napsal: pon 7. lis 2011, 21:51
od Exp
Jo, takže do session ukládáš id aktuálně přihlášeného uživatele. Pak tedy stačí volat jednoduchou funkci pro ověření uživatelských práv.
Kód: Vybrat vše
function check_rights() {
$user_rights_query = mysql_query("SELECT opravneni FROM uzivatel WHERE id = '{$_SESSION['id']}'");
$user_rights = mysql_fetch_array($user_rights_query['opravneni']);
return $user_rights;
}
Tahle funkce ti vrátí hodnotu práv přihlášeného uživatele uloženou v databázi, tzn. 0 nebo 1. Dál s ní musíš operovat všude tam, kde se vytvářejí rozdílné ovládací prvky pro admina a pro normálního usera.
Kód: Vybrat vše
if(check_rights() == 1) {
//dělej něco výhradně pro admina;
}