Autor Zpráva
JunekCZ
Profil
Dobrý den. Chtěl bych se zeptat, jak se nastavují práva v mysql. Vůbec si s tím nevím rady a chci dát různé výhody adminovi na stránku. Předem děkuji za odpověd :)
Snipo
Profil
Neviem či som dobre pochopil, ty chceš aby napríklad admin na stránke mohol pridávať články atď.? V tom prípade sa začni učiť php, sql.
JunekCZ
Profil
Dobře :) napíšu hned jak budu vědět :D Děkuji :)
JunekCZ
Profil
Prosím, poraďte mi kde mám chybu.
Column count doesn't match value count at row 1
<?php
$spojeni = mysql_connect("mysql.ic.cz","ic_skouzim","******");
if (!$spojeni)
  {
  die('Nelze se spojit: ' . mysql_error());
  }
mysql_query("SET NAMES 'utf8'");
mysql_select_db("ic_skouzim", $spojeni);
$sql="INSERT INTO tabulka (nazev, text)
VALUES
('$_POST[nazev]','$_POST[text]',NOW())";
 
if (!mysql_query($sql,$spojeni))
  {
  die('Chyba: ' . mysql_error());
  }
echo "přidáno";
 
mysql_close($spojeni)
?>
 
<?php
$spojeni = mysql_connect("mysql.ic.cz","ic_skouzim","******");
if (!$spojeni)
  {
  die('Nelze se spojit: ' . mysql_error());
  }
mysql_query("SET NAMES 'utf8'");
 
mysql_select_db("ic_skouzim", $spojeni);
$vypis = mysql_query("SELECT * FROM tabulka ORDER BY datum DESC");
echo "<table border='1'>
<tr>
<th>název</th>
<th>článek</th>
</tr>";
while($row = mysql_fetch_array($vypis))
  {
  echo "<div id=\"clanek\">";
  echo "<h1>" . $row['nazev'] . "</h1>";
  echo "<p>" . $row['text'] . "</p>";
  echo "</div>";
  }
mysql_close($spojeni);
?>
</body>
</html>

Mají tam být jen 2 (nazev a text) a me to pise ze jsem jich někde napsal víc :(
Předem děkuji za odpověď :)

Moderátor Joker: Smazal jsem z kódu heslo k databázi.
JunekCZ
Profil
Omlouvam se, ale chybu jsem jiz opravil. Dekuji za pochopeni :)


Dobře. Takže Přidávání slov a textu už jsem zprovoznil. Ale opravdu nevím jak nastavit práva pro administrátora. Předpokládám že musím udělat přihlášení. Je to tak? :)
JunekCZ
Profil
Dobrá. Takže přihlášení jsem vytvořil včetně sloupečku práva. Poradí mi někdo co dál?
Předem děkuji za odpověď. :)
Alphard
Profil
Do vašeho kódu nevidíme, ale jestli je hotová registrace s přihlášením a máte k dispozici nějaký údaj, jestli je daná osoba admin, stačí u kontrolovaných akcí vždy zkontrolovat, jestli má uživatel dostatečné oprávnění.

if ($_SESSION['user']['isAdmin'])
{
  // uživatel je admin, může přidat článek
}
JunekCZ
Profil
Dobrá. Mám sem vložit kód? :)
Hando
Profil
A co je za problém? Zpracovat nějaký údaj, jestli je dotyčná osoba oprávněná ke vkládání článků (řešení popsal Alphard), nebo něco jiného? K tomu údaji se musíš dostat, buď si ho vždy kontroluj v db, což není úplně nejvhodnější řešení, nebo si ho ulož do session a pracuj s tím, viz výše.
JunekCZ
Profil
Myslel jsem textarea (admin se prihlasi a muze pridavat clanky)
JunekCZ
Profil
mám udělat zvlášť přihlášení i pro admina? Jakože klasická registrace a registrace pro adminy? (vytvorim soubor, ktery zapise do nove tabulky v databazy noveho clena ale bude na nej reagovat jinak) Vlastně ano, něco takového co popsal Alphard... Ale jak to udělat nevím :(


Nebo mám vytvořit zaheslovanou stránku, kam můžou jen ti, kteří znají heslo?
Hando
Profil
Ale proboha, proč rozdílné přihlášení a registrace? Registrace ti uloží uživatele do databáze a jen u těch, kdo budou mít funkci "admin", si do sloupečku "prava" uložíš třeba 1, nebo si to prostě takhle odlišíš, vždyť už jsi psal, že jsi přidal sloupeček "práva". Tedy jedna tabulka pro uživatele (pokud se budou moci registrovat) a zárověn pro uživatele, adminy, co budou moci přidávat články.
Pořád nevím, na čem konkrétně ses zasekl, ale zdá se, že v tom máš dost bordel. Takže zastav psaní kódu, vezmi si papír a tužku a rozepiš si (pro srovnání myšlenek), jak se bude chovat program od začátku...
- vlezu na stránku - co vidí všichni? (články, možnost registrace...)
- přihlásím se
- - je admin? - co mu nabídnu? (přidat článek, upravit, atd...)
- - není, je tedy uživatel - -||- (komentovat, hodnotit...)
- - ani jedno - neplatné přihlášení.
Prostě si rozmysli větvení programu a podle toho to potom piš dál, připadá mi, že lítáš od jednoho k druhému, ale ten základ chybí, viz komentář [#10] JunekCZ.
JunekCZ
Profil
Ano, to udělám :)
Ale prozraďte mi ještě prosím, jak vytvořím ty práva, když je mám jen napsané v databázy? :/
Hando
Profil
<OT> Člověče, už podruhé - "v databázi". :) Dodržuj syntaxi rodného jazyka. :D </OT>
Máš sloupeček "prava" (třeba, nevím, jak to máš pojmenované) v databázi, v tabulce, kde jsou registrovaní uživatelé? Vycházím z toho, že ano. [#6] JunekCZ
U každého registrovaného uživatele tam "něco" bude. Nastav si třeba výchozí hodnotu při registraci na null a tomu, kdo má být admin (teď to stejně děláš cvičně na localhostu, předpokládám), tam zapiš třeba 1, nebo true, nebo prostě cokoliv, co odpovídá datovému typu sloupečku. A tím pádem máš něco, podle čeho ty uživatele můžeš rozlišit, tedy předpoklad pro práva. Pak je jen na tobě, abys to zapracoval do větvení programu, jak jsem psal výše a psal to i Alphard. Pomocí if a příslušného rozhodnutí podle toho, jestli je admin, ovlivníš další chod programu a tím docílíš toho, že se ten sloupeček v db bude chovat jako práva.
Já už nevím, jak jinak to popsat...
JunekCZ
Profil
Aha, takže sloupeček prava u určitého uživatele změním na not null? Doufám že už nedělám velké potíže :D :/
Hando
Profil
U určitého ne, u všech - vlastnosti sloupečku nastavuješ pak pro všechny záznamy. Stejně jako v excelu nastavuješ šířku sloupečku pro všechny řádky. :) Nevím, jakého je datového typu, ale když použiješ třeba ENUM, tak si pak můžeš vybrat, co se ti bude líbit, aby to bylo jako defaultní. Konkrétní řešení už je na tobě, ty s tím pak budeš pracovat. :)
JunekCZ
Profil
takže takto? :) http://skoufka.wz.cz/db.png
Hando
Profil
Hm, ze začátku to třeba stačí, aby ses s tím naučil pracovat, tedy aplikovat data z db do kódu. Ale nastavovat id jako null a zároveň auto_increment, stejně tak ostatní sloupce, které MUSÍ být vyplněné - nastuduj si o tom něco, ať nezískáš hned ze začátku všelijaké divoké návyky, byť chybami se člověk učí. :)
Jestli s tím ale spěcháš, asi by bylo lepší použít nějaký jednoduchý redakční systém, který v sobě už správu uživatelů má. Nějaké jednodušší byly prezentované i tady na djpw, stačí pohledat.
JunekCZ
Profil
Ano, ja planuji nastudovat hodne programovacich knih, ale kamarad chtel vytvorit stranku a zrovna to, co tu resime, je posledni bod k dotvoreni stranky :)


Kdyz sem vlozim kod, rekne te mi, co bych tam mel napsat abych ja (jakoze admin) mel opravneni k pridani clanku? :) zatim to tam muze pridavat kazdy :D
ProbablyYes
Profil
1) Do databáze se zapíše např. Jméno uživatele, heslo, práva. Klidně ručně.
2) Na stránce se vytvoří formulář pro vstup jména uživatele a hesla.
3) Pomocí dotazu na databázi porovnáš vložené údaje skrze formulář s daty v databázi.
4) V případě nalezení shody uložíš práva uživatele (ty co jsou v databázi) do např. Sessions.
5) Na základě podmínky zjistíš, zda má uživatel který stránku načetl dostatečná práva.
6) V případě, že ano, zobrazíš obsah určený pro přihlášeného uživatele.

Pro přihlašování ti doporučuji - pokud nemá být automatické - využít array v kterém budeš mít práva, jméno a heslo před-uložené. Přihlašování ani registrace uživatelů není jednoduchá záležitost a už vůbec ne bezpečné a ošetřené přihlašování/registrace.

Co tedy hledat na internetu?
1) Založení tabulky.
2) PHP scriptem vytažení dat z tabulky.
3) Práce s daty z tabulky.
4) Větvení programu pomocí podmínek např. if.
5) SESSIONS, COOKIES.

Jak už navrhoval Hando, je mnohem lepší využít již existující řešení. Pokud vytvoříš vlastní bez nutných znalostí, vytvoříš akorát pískoviště pro lidi, kteří tvou aplikaci s radostí napadnou. Pokud stáhneš existující řešení, můžeš si otevřít zdrojový kód a řádek po řádku se ho pokoušet pochopit pomocí rozumu a vyhledávače.
Hando
Profil
ProbablyYes:
vytvoříš akorát pískoviště pro lidi, kteří tvou aplikaci s radostí napadnou.
No, obávám se, že už se tak stalo, viz současný stav stránek http://skoufka.wz.cz/ - (print screen - zde. Což teda považuji za dost ubohé, honit si ego na začátečníkovi, který se snaží něco se naučit. Samozřejmě kor když je to i s "návodem" (v podobě zde uvedeného zdrojáku). Měl jsem už v druhém příspěvku rozepsanou větu o ošetřování vstupů, ale nechtěl jsem mu motat hlavu - teď si říkám, že to možná byla chyba.

JunekCZ:
Pokud chceš udělat stránky, použij nějaký redakční systém, jinak strávíš spoustu času se zprovoznění tebou řešeného problému, dále kvantum času bádáním, jak ošetřit vstupy a výstupy atd. a možná se ti to ze začátku pořádně ani nepovede a kdejaký osel, který se bude nudit, ti to sestřelí.
Koukni se do tématu Jednoduchý redakční systém v češtině. Já koukal třeba na MNews CMS a docela se mi líbil. Sice nepoužívá databázi, ale asi to u webu, kde bude z počátku pár článků, stačí. Nevím, to musíš vědět ty, co chceš. Když použiješ redakční systém, chvíli se s ním budeš učit pracovat, ale ve finále si ušetříš čas, který můžeš věnovat třeba designu stránek. Krom toho, MNews je, pokud si dobře pamatuji, psaný procedurálně, takže se ze zdrojového kódu můžeš přiučit. Byť ne práci s databází, ale spoustu jiných věcí určitě.

ja planuji nastudovat hodne programovacich knih
To není nic proti ničemu, ale chce to čas. Taky nemůžeš úplně dobře stavět barák s dotazem, jak založit překlad, když nevíš, jak vykopat základy. :)

Pokud ale trváš na vlastním řešení, ukaž, co jsi vyplodil a třeba vymyslíme alespoň základní zabezpečení... :)
JunekCZ
Profil
Dobre, budu na tom pracovat :)
Děkuji za pomoc :)

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: