Diskuze: Machr na PHP - Evidence knih

PHP PHP Machr na PHP - Evidence knih American English version English version

Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Ahoj, v pravidelné minisoutěži o placku Machr na PHP a samolepky si naprogramujeme tento týden něco odlehčujícího. Půjde o jednoduchou evidenci knih, podobný machr byl minulý týden v ASP.NET. Vytvořte web, který bude zobrazovat knihy z MySQL databáze, u knihy uložte několik údajů, např. titulek, autora a datum vydání, můžete ukládat i obrázky. Web následně zobrazí seznam všech knih a také poskytne administrační rozhraní pro jejich vkládání, mazání a editaci.

Pro pokročilé: Zpřístupněte administraci pouze přihlášeným uživatelům, seznam knih zobrazujte na několik stránek, vždy po deseti knihách.

Snažte se o objektovou aplikaci a vyvarujte se SQL injekcím a podobným chybám. Jako vždy platí, že je lepší jednoduché a hezké řešení, než řešení, které toho umí více, ale je špatně napsané. S řešením hotový web umístěte na nějaký hosting a pošlete odkaz.

Čas si dáme do pondělí 3.3. do 10:00.

Kompletní pravidla soutěží: http://www.itnetwork.cz/…outezi-machr

Editováno 26.2.2014 11:41
Odpovědět  +5 26.2.2014 11:40
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Pavel Mareš
Redaktor
Avatar
Pavel Mareš:

Toto byla naše první "aplikace" ve škole v prvním ročníku, když jsme se začali učit php a mysql, teda skoro, my jsme dělali databázi CDéček :D . Už se těším až uvidím pár výtvorů, jak jsem to mohl udělat lépe, nebo jak to vytvořit dobře v OOP.

Nahoru Odpovědět  +1 26.2.2014 12:49
Nechci být workoholik. Bohužel někdy musíme být tím, čím nechceme.
Avatar
Marek Z.
Redaktor
Avatar
Marek Z.:

Stačí výpis/seznam knih či i to, aby měla každá kniha svoji stránku popřípadě?

Nahoru Odpovědět  ±0 26.2.2014 20:51
Chybami se člověk učí, běžte se učit jinam!
Avatar
kashpi
Redaktor
Avatar
kashpi:

můj výtvor online: http://machr.kashpi.cz/
přihlášení
email: admin@example.com
heslo: adminpass

 
Nahoru Odpovědět  +2 1.3.2014 11:56
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Nahoru Odpovědět 1.3.2014 12:00
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na kashpi
Martin Konečný (pavelco1998):

Hmm, Nette, tak to ti sdraco asi moc neohodnotí. :-D
Používáš na to nějaký dataGrid?

 
Nahoru Odpovědět 1.3.2014 12:06
Avatar
kashpi
Redaktor
Avatar
kashpi:

v tomto případě sem žádný dataGrid nepoužil, přišlo mi to na takovou jednoduchou věc zbytečné, jinak když už tak sem používal NiftyGrid
http://nette.merxes.cz/…ty/niftygrid

 
Nahoru Odpovědět 1.3.2014 12:12
Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Michal Vašíček:

Budou se ty s administrací na heslo & stránkováním hodnotit zvlášť, nebo všechno v jednom pytli?

Nahoru Odpovědět 1.3.2014 12:13
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Michal Vašíček
David Čápka:

Záleží kolik toho bude, klidně dám 2 placky za jednodušší a těžší variantu.

Nahoru Odpovědět 1.3.2014 12:15
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Michal Vašíček:

:o, tak to doufat, abych už přidal svůj výtvor jenom já :)

Nahoru Odpovědět  ±0 1.3.2014 12:17
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
Radim Sückr
Redaktor
Avatar
Odpovídá na kashpi
Radim Sückr:

Nemyslím si, že se použití Bootstrapu a Nette bude na devbooku nějak hodnotit. :D Ale když už jsi to v tom Nette uhroudil, proč jsi tam dal SimpleRouter? To máš na serveru zakázaný mod_rewrite?

 
Nahoru Odpovědět 1.3.2014 13:04
Avatar
kashpi
Redaktor
Avatar
kashpi:

on tam není SimpleRouter, ale jen sem neudělal routy na ty stránky, firendly URL nebylo součástí zadání, ale je to jeden řádek v Routru :)

 
Nahoru Odpovědět 1.3.2014 13:44
Avatar
Radim Sückr
Redaktor
Avatar
Odpovídá na kashpi
Radim Sückr:

No právě, je to jenom jeden řádek. Kvůli tomu se na to ptám. :D

 
Nahoru Odpovědět 1.3.2014 14:05
Avatar
Martin Konečný (pavelco1998):

Ok, nechci se přímo zapojit do soutěže, protože mi nejde o vyhrání placky, ale o vyřešení úkolu.
Nicméně bych byl rád, kdyby mi někdo (kdokoliv) napsal, co je v návrhu špatně.

Ukázka zde:
http://konecny.php5.cz/devbook/knihy/

Přihlásit se můžete jako test : test
Nedával jsem tam práva, takže měnit knihy může každý registrovaný uživatel.
Není možnost přidání autora, to už se mi dělat nechtělo (byla by to otázka jedné metody v BookControlleru, BookModelu a šablony).
Taky jsem poprvé použil Smarty, tak snad tam je vše OK.

Zdroják:
http://leteckaposta.cz/798926597

Díky

Editováno 1.3.2014 15:49
 
Nahoru Odpovědět 1.3.2014 15:46
Avatar
Ondřej Štorc:

Zde je můj výtvor: http://www.arakamus.moxo.cz/…ih/index.php
Je to můj první výtvor v PHP. Určitě to nevypadá přesně podle mých představ, ale na to že jsem se začal učit PHP ve středu to jde :). Login system jsem nestihl udělat tak každý může editovat knihy podle libosti.

Nahoru Odpovědět 2.3.2014 12:20
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Marek Z.
Redaktor
Avatar
Marek Z.:

Můj výtvor online najdete zde: http://sifler.php5.cz/?…
Ke stažení zde: http://leteckaposta.cz/590289109

Pokud chcete v online verzi zkusit uložení knihy tak údaje jsou:
nick: admin
heslo: 123admin

Nahoru Odpovědět 2.3.2014 18:37
Chybami se člověk učí, běžte se učit jinam!
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na Marek Z.
Honza Bittner:

Hezké, funguje to, i přidávání knih... :D

Nahoru Odpovědět  +2 2.3.2014 18:41
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na Honza Bittner
Ondrca:

Honza Bittner je legenda :D

Nahoru Odpovědět  +2 2.3.2014 18:44
Zase jsem o něco chytřejší
Avatar
Marek Z.
Redaktor
Avatar
Nahoru Odpovědět  +1 2.3.2014 18:44
Chybami se člověk učí, běžte se učit jinam!
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na Honza Bittner
Ondrca:

Jen aby někdo nezaměnil slovíčko legenda za něco jinýho :D

Nahoru Odpovědět  +2 2.3.2014 19:22
Zase jsem o něco chytřejší
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Ondrca
Marek Z.:

Někdo může přiřadit i obrázek, to bych taky chtěl vidět co by tam asi bylo.. :D

Nahoru Odpovědět  +1 2.3.2014 21:54
Chybami se člověk učí, běžte se učit jinam!
Avatar
Jan Poláček (johny881):

Přidávám svůj příspěvek, jen tak tak jsem něco stihl, ale určitě chci zpětnou vazbu, částečně jsem využil sdracovi tutoriály, takhle se mi programuje rychle a dobře -> http://leteckaposta.cz/348603156 a http://devbook.publikujem.cz/
Mít víc času, udělám toho více, ale i tak funguje administrace, přidání, úprava a mazání knihy.

Nahoru Odpovědět 3.3.2014 9:53
Instrukce na adrese 0x77104f29 odkazovala na adresu paměti 0x00000014. S pamětí nelze provést operaci: written.
Avatar
Matěj↓Andrle:

Inu, kamarád mi to sdělil včera. Myslím, že jsem podal extrémní výkon, tak se prosím nezlobte, ale stihnout jsem to vskutku nemohl...

http://lahiro.comli.com

Zdrojový kód:

http://ulozto.cz/…d/lahiro-zip

Smazání:

http://ulozto.cz/…516794614016

 
Nahoru Odpovědět  +1 3.3.2014 9:59
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Honza Bittner
Zdeněk Pavlátka:

Pěkná kniha, jen by to chtělo obrázek :D

Nahoru Odpovědět 3.3.2014 11:00
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Díky všem za účast, viděl jsem spoustu zajímavého kódu. Snažil jsem se ke všemu něco napsat, ale důkladně projet jednu takovouhle aplikaci by už bylo pomalu na 2 hodiny.

  • Ondřej Štorc - Pěkná recyklace Machra na ASP, jen někam zmizel Harry Potter :P Návrhově docela čitelné, ale bez MVCčka, takže se tabulky jen echují. Je škoda, že ručně kopíruješ do všech podstránek znovu layout, stačilo by tam dát něco jako require('layou­t_horni_cast.php'), za to obsah a pod to to samé pro spodní část. V těch vypisovacích metodách máš XSS, pozor na to.
  • Martin Konečný - Vypadá to na závan technologií, které jsem zde ještě nepotkal. Musím uznat, že to máš moc pěkně zvládnuté, události v kontrolerech a dokonce taková jednoduchá DependencyInjec­tion. To je tvůj framework? . Dávat konfig do ini mi přijde nebezpečné, protože jde stáhnout. Samozřejmě ho můžeš zakázat v .htaccess, ale dá se na to snadno zapomenout. Volil bych raději PHP soubor s nějakými konstantami. Tohle se mi fakt líbí, kódu je hodně, snad jsem něco zásadního nepřehlédl.
  • Jan Poláček - Hashovat heslo jen do md5 bez soli je jako kdybys ho nehashoval vůbec :) Použij nějakou bytelnější funkci a hlavně používej sůl. Ve třídě input máš XSS. To vylepšení zdejšího frameworku o metody kontrolerů je dost dobré, mám radost, že ten seriál k něčemu je a že ho dokážete takhle upravovat a používat. Asi se od tebe inspiruji a dám metody i do zdejšího tutoriálu.
  • kashpi - Tak sem zmizel ten Harry Potter :P Pohrál sis s tím hezky, hlavně přidělování autorů knihám. Jelikož je to Nette, tak nejsem kompetentní k tomu, abych ti ohodnotil jak správně jeho komponenty používáš, nicméně mi to připadá velmi dobře zvládnuté.
  • Sifler - V kódu máš SQL injekce. Tohle mě dostalo:
$id = $_GET['id'];//nemusíme ošetřovat, víme jistě, že se jedná o číslo
$result = Database::query("
        SELECT * FROM books
        WHERE id = '$id'
");

Když něco bereš ze vstupu, tak tam ti může každý napsat co chce :D Je jedno, že ten vstup vyplňuješ ty v odkazu, uživatel si ten odkaz může zkopírovat a změnit id na 'DELETE * FROM books--. Zapracuj také na názvosloví, třída ListsBooks a její metoda books(), co takhle BookList a metoda render()?

  • Matěj Andrle - SQL injekce.

Placky získávají Martin Konečný (pavelco1998) a kashpi. Napište prosím x adresu a publikujte své výtvory. Na ostatní se těším příště :)

Editováno 3.3.2014 12:22
Nahoru Odpovědět  +2 3.3.2014 12:20
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Martin Konečný (pavelco1998):

Děkuji za ohodnocení. Žádný framework si nedělám, popravdě jsem původně ani netušil, že mi to bude fungovat. :-D

A na .htaccess v konfigu jsem opravdu zapomněl, díky za připomínku.

 
Nahoru Odpovědět 3.3.2014 12:28
Avatar
Odpovídá na David Čápka
Ondřej Štorc:

No jelikoz jsem se PHP zacal ucit ve stredu tak jsem rad ze jsem splacal aspon toto a ze jsem dostal takove hodnoceni :-D. Jinak gratuluji vitezumm :-)

Editováno 3.3.2014 12:34
Nahoru Odpovědět 3.3.2014 12:32
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Ondřej Štorc
David Čápka:

Říkáš, že kdybych to zadal v pondělí, tak je to na MVCčku jo? :D

Nahoru Odpovědět 3.3.2014 12:44
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Nahoru Odpovědět 3.3.2014 13:00
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Martin Konečný (pavelco1998):

Jen taková technická - jak mohu něco publikovat?

 
Nahoru Odpovědět 3.3.2014 16:39
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Ondřej Štorc:

Musíš zažádat o redaktorská práva ve svém profilu

Nahoru Odpovědět  +1 3.3.2014 16:43
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na David Čápka
Marek Z.:

Počkat a toto nestačí snad? :D

preg_match('/^[[:digit:]]+$/', $_GET['id']) == 1

Nic jiné než číslo ti to nepustí..

Nahoru Odpovědět  +1 4.3.2014 8:25
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na Marek Z.
Ondřej Štorc:

Když jsem ošetřoval zadání číslice tak jsem použil funkci is_numeric, připadá mi že to tvoje řešení takové složité... BTW. nemusíš dávat že se to rovná jedné v podmínce to znamená že je to true :)

Nahoru Odpovědět  +1 4.3.2014 10:08
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Ondřej Štorc
Marek Z.:

Mě to moc složité nepřijde, klasický regulární výraz. Pokud to prostě číslo nebude, nemusím ochraňovat SQL injekci a zjišťovat zda vůbec existuje. To udělám prostě po tom, až mi to zjistí prostě zda jde o číslo.
Jde mi pouze o to, že tam SQL injekce není.. :)

Nahoru Odpovědět 4.3.2014 10:17
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na Marek Z.
Martin Konečný (pavelco1998):

A nebo neifuj a přetypuj tu hodnotu na číslo. Když to nebude číslo, přetypuje se to na 0. Jeden SQL dotaz ty servery moc nezatíží. :-)

 
Nahoru Odpovědět 4.3.2014 13:02
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 36 zpráv z 36.