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;
}