Soutěž: Machr na PHP - Registrace, přihlašování

PHP PHP Machr na PHP - Registrace, přihlašování American English version English version

Soutěž již skončila

Zadání

Vaším úkolem v této soutěži bude vytvořit jednoduchou stránku a přidat na ní registrační formulář. Po registraci bude třeba účet aktivovat pomocí odkazu zaslaného na email. K tomu přidáte možnost přihlášení pro zaregistrované (a aktivované) účty + možnost obnovení hesla pomocí emailu.
Během vyplňování registračního formuláře budete pomocí JavaScriptu kontrolovat platnost vyplňovaných údajů (jako např. jak je dlouhé heslo, zda se shoduje s potvrzením hesla, jestli uživatel nezadal místo emailu nějaký nesmysl...)
Hodnotit budu kód (JavaScript i PHP) a funkčnost (zda vše funguje jak má, jestli stránka nevyhodí nějakou chybu) - a to půl na půl.
Maximum je sto bodů.
K JavaScriptu můžete použít čistou jQuery. Jakékoli jiné knihovny a frameworky jsou zakázány.

Výhra

Vítěz dostane placku Machr, a ocenění do portfolia.

Výhra

Výsledky

Jméno bodů Řešení ( Stáhnout vše )
Matúš Petrofčík 99 Stáhnout řešení
VitekST 88 Stáhnout řešení
grygerek.tomas 80 Stáhnout řešení
IT Man 80 Stáhnout řešení
Martin Štěpánek (Enormyk) 72 Stáhnout řešení
Eda Stehlík 22 Stáhnout řešení
Patrik Neumann 5 Stáhnout řešení
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

V této soutěži umožníte uživatelům stránky se zaregistrovat a následně přihlašovat.

Soutěž končí 29. května 12:00, tak se nezapomeň zapojit! :)

Odpovědět  +1 19. května 19:24
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Martin Konečný (pavelco1998):

Tak na tohle jsem zvědav, protože co jsem jen tak z nudy procházel na YT videa "php login", tak byly na cca čtyřech stránkách všechny videa do jednoho špatně :D

 
Nahoru Odpovědět  +2 19. května 19:31
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Zdeněk Pavlátka:

Videa na YouTube jsou asi nejhorší zdroj návodů k programování, co znám. ;)

Nahoru Odpovědět 19. května 19:36
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
sunspinx
Člen
Avatar
sunspinx:

Vcera som sa zacal ucit PHP, tak to vyskusam :D

 
Nahoru Odpovědět  +1 19. května 19:39
Avatar
IT Man
Redaktor
Avatar
IT Man:

Tak tohle je opravdu pro mě výzva. Rád se zúčastním. :)
Jen bych se chtěl zeptat, jestli je potřeba zobrazování profilu?

Nahoru Odpovědět  +1 19. května 19:43
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Odpovídá na Zdeněk Pavlátka
Martin Konečný (pavelco1998):

Jo to je fakt, ale právě proto, že to je video, to asi sleduje hodně lidí :D ale tak na druhou stranu - čím víc lidí to dělá blbě, tím jsme my hodnotnější :D

 
Nahoru Odpovědět  +4 19. května 19:57
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na IT Man
Zdeněk Pavlátka:

Stačí někde zobrazit kdo je přihlášený (pokud někdo je) a dát možnost k ukládání.

Nahoru Odpovědět  -1 19. května 19:58
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Dominik Gavrecký:

Framework je povolený ?

Nahoru Odpovědět 19. května 21:11
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Nahoru Odpovědět 19. května 21:23
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Matúš Petrofčík:
  • Hodnotí sa celá apka ako taká (tj. či je MVC, či to má pekné url...) alebo sa zameriavaš len na tú funkcionalitu registrácie/prih­lásenia (tj. či je to OOP, čo všetko robi...)?
  • Budeš sa pozerať aj na design? Dúfam že nie :D
  • Môžeme pre vlastné dobro používať trebárs bootstrap.css?

Ďakujem za odpovede :)

Editováno 19. května 22:07
Nahoru Odpovědět 19. května 22:06
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Marek Z.:

Dovolím si nesouhlasit. Díky jednomu seznamu videí jsem dokázal zprovoznit základní kostru platební brány přes PayPal.

Nahoru Odpovědět  +1 19. května 22:12
Chybami se člověk učí, běžte se učit jinam!
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Matúš Petrofčík
Zdeněk Pavlátka:

Hodnotí sa celá apka ako taká (tj. či je MVC, či to má pekné url...) alebo sa zameriavaš len na tú funkcionalitu registrácie/prih­lásenia (tj. či je to OOP, čo všetko robi...)?

  • hodnotit budu jen ty registrace + přihlašování + to co k tomu patří (viz. zadání)

Budeš sa pozerať aj na design? Dúfam že nie

  • ne

Môžeme pre vlastné dobro používať trebárs bootstrap.css?

  • bootstrap klidně použij
Nahoru Odpovědět  +2 19. května 22:14
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Marek Z.
Zdeněk Pavlátka:

Neříkám, že všechna videa jsou špatná, jen že těch dobrých moc není...

Nahoru Odpovědět 19. května 22:18
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
BlugW
Redaktor
Avatar
BlugW:

soutez je na php a kontrolovat spravnost pomoci javascriptu? wtf?

Nahoru Odpovědět  +3 21. května 2:20
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
Odpovídá na BlugW
Mark Vajšbejn:

Mám takový dotaz, můžu využít pro mailování potřebných věcí PHPMailera?
viz. https://github.com/…er/PHPMailer (Přecejen, obsahem je pouze registrace, přihlášení - jednoduchý profil a nějakej odkaz)

Mimochodem, BlugW má pravdu. Je to dosti směšné. :-D
Tu má jít spíš o funkčnost a kvalitu kódu (když už)

 
Nahoru Odpovědět 21. května 2:50
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na BlugW
Zdeněk Pavlátka:

Soutěž je na obojí... Název "Machr na PHP" je podle placky, protože placku "Machr na PHP, JavaScript a SQL" tu nemám ;)

Nahoru Odpovědět  ±0 21. května 11:01
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Mark Vajšbejn:

Dobře tedy, každopádně, můžeš ještě odpovědět mně? :D

 
Nahoru Odpovědět 21. května 11:09
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Mark Vajšbejn
Zdeněk Pavlátka:

Ne. Posílání mailů je součástí zadání... Cílem soutěže není vytvořit jen to co je v nadpisu / názvu, ale přečíst si celé zadání a splnit ho. Název stylu

Machr na PHP, JavaScript, Webdesign a SQL: jednoduché stránky, přihlášení, registrace, odesílání mailů, obnovení hesla a kontrola správnosti zadaných hodnot

není zrovna ideální ;)
Takže obsahem fakt není pouze registrace, přihlášení - jednoduchý profil a nějakej odkaz. A ten profil tam vůbec být nemusí, ačkoli body navíc za něj určitě budou.

Nahoru Odpovědět  +1 21. května 11:10
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Mark Vajšbejn:

No, dobře. :D
Už ti plně rozumím, jen jsem olenivěl, když jsem viděl ten mail.

Mimochodem, do obsahu jsi to napsat mohl, případně minimálně bod, kterým vyvrátíš jakékoliv použití pomocných 'knihoven'. :-)

A mimochodem 2: pod pojmem profil, jsem měl na mysli jakousi stránku, která by bylo pouze pro přihlášené uživatele.

A jinak už jsem snad vše pobral, takže díky.

Editováno 21. května 11:16
 
Nahoru Odpovědět 21. května 11:16
Avatar
VitekST
Člen
Avatar
VitekST:

Smím použít MVC skeleton z mé vlastní dílny? (technicky vzato je to framework)

Můžu také použít knihovnu Tooltipster? (týká se to jen UI, chtěl bych ve formě popupu u políčka zobrazit případnou chybu validace formuláře)

 
Nahoru Odpovědět  +1 21. května 13:51
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na VitekST
Zdeněk Pavlátka:

To, co jsi sám vytvořil je OK. A co se týče té knihovny, pokud jde jen o něco vizuálního tak ji klidně použij, vzhled nehodnotím.

Nahoru Odpovědět 21. května 14:35
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
BlugW
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
BlugW:

SQL v tomhle pripade chapu. Javascript ne. Kdyz uz, pouzil bych ho na neco jineho(napr. registrace bez refreshe, atd..), ne na kontrolu spravnosti hodnot, protoze tohle jde v php(a placka je za php) ;)

Editováno 21. května 20:34
Nahoru Odpovědět  -1 21. května 20:33
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na BlugW
Marek Z.:

V zadání máš zadané co se bude hodnotit, co na tom stále nechápeš?

Že se jedná o placku pouze z jednoho jazyka stále zadání nemění..

Nahoru Odpovědět  +1 21. května 22:51
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na BlugW
Dominik Klapuch:

To sice ano, ale JS validace se hodí pokud nechceš zbytečně dávat požadavek na server. I když nemám JS rád, tak si myslím, že to k tomu prostě patří.

Nahoru Odpovědět  +1 21. května 23:35
Kód a data patří k sobě.
Avatar
BlugW
Redaktor
Avatar
Odpovídá na Marek Z.
BlugW:

Napsal jsem co nechapu. Musim ti to opravdu opakovat?
Dominik Koudela to mas pravdu, ale zase javascript se da vzdy vypnout + tady jsou strasni zastanci toho, ze se tohle v js nema delat protoze se da vypnout, a potom tu najdu machra na PHP s timhle.

Editováno 21. května 23:40
Nahoru Odpovědět  -1 21. května 23:40
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
TomasGlawaty
Člen
Avatar
Odpovídá na BlugW
TomasGlawaty:

Samozřejmě, že i přes JS validaci se musi data kontrolovat i na serveru. Validace pomocí JS je pouze UI feature pro klienta :)

Nahoru Odpovědět  +3 22. května 0:11
Člověk může dosáhnout čeho si zamane. Jen musí chtít, případně něco obětovat ...
Avatar
Taskkill
Redaktor
Avatar
Odpovídá na Dominik Klapuch
Taskkill:

jen ze zvedavosti... Kód a data patří k sobě. ... to je neco jako OOP FTW ? nebo spis hate FP?

 
Nahoru Odpovědět 22. května 0:19
Avatar
Petr Kunčar
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Petr Kunčar:

Mohl by jsi mi prosim osvetlit tuto cast vety: "a dát možnost k ukládání". Kdyz je uzivatel prihlasen, co smi ukladat? Nejak jsem to v zadani nenasel.
Predem dekuji za odpoved.

 
Nahoru Odpovědět 23. května 0:07
Avatar
Petr Stastny
Redaktor
Avatar
Petr Stastny:

Teda, tohle v C# tak se pridam. Nezamysli nekdo udelat na c# machra? ☺

 
Nahoru Odpovědět  +1 23. května 8:18
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Petr Kunčar
Zdeněk Pavlátka:

Tam mělo být odhlášení... To je tak když píšeš o jednom a myslíš na druhé :D

Nahoru Odpovědět  +2 23. května 9:42
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Nahoru Odpovědět 30. května 14:13
obsah kocky = r^2 ... a preto vlak drnká
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Matúš Petrofčík
IT Man:

Psal jsem mu sám ze zvědavosti. Má prý hodně práce. :D

Nahoru Odpovědět 30. května 14:14
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na IT Man
Matúš Petrofčík:

V pohodke, len som bol zvedavý :) Čo si to sem nenapísal nech vedia aj ostatní? :D

Nahoru Odpovědět 30. května 14:30
obsah kocky = r^2 ... a preto vlak drnká
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Matúš Petrofčík
IT Man:

Kontaktoval jsem ho chvilku před tebou a nestihl jsem to sem napsat ... eh, musím mít nějakou záminku. :D

Editováno 30. května 14:39
Nahoru Odpovědět 30. května 14:38
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Nahoru Odpovědět 30. května 14:43
obsah kocky = r^2 ... a preto vlak drnká
Avatar
IT Man
Redaktor
Avatar
IT Man:

A jelikož to Zdeněk Pavlátka nenapsal, ale mně ano, tak vyhodnocení bude možná už zítra. Nechci ale nic slibovat, ptal jsem se ho jen na +/- odpověď. :D
//EDIT: a třeba ho to donutí to vyhodnotit dřív. :D

Editováno 30. května 14:56
Nahoru Odpovědět 30. května 14:55
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na IT Man
Zdeněk Pavlátka:

Nedonutí ;) nedostatek času je pořád nedostatek času

Nahoru Odpovědět  +2 30. května 15:07
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Nahoru Odpovědět  +4 6. června 11:31
obsah kocky = r^2 ... a preto vlak drnká
Avatar
IT Man
Redaktor
Avatar
IT Man:

Nás chce mít napnuté ... :D

Nahoru Odpovědět 9. června 16:21
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Nahoru Odpovědět  +1 9. června 17:52
Nesnáším, když někdo u if nepoužívá {}, byť se jedná o jeden řádek.
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Matúš Petrofčík:

Zdeňek s nami hraje "Hide and seek" a kto ho nájde, dostane svoje hodnotenie :D

Nič to, ja si idem zahrať "Mensch ärgere dich nicht" :D

Nahoru Odpovědět 9. června 19:56
obsah kocky = r^2 ... a preto vlak drnká
Avatar
IT Man
Redaktor
Avatar
IT Man:

Nějaké informace? Kdy by už mohlo být vyhodnocení? Už čekáme 16 dní. :D

Nahoru Odpovědět  +2 14. června 16:52
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Odpovídá na IT Man
Patrik Neumann:

ano, nefunguje mu odesílání emailů z xamppu, teď asi řeší to odesílání několik dní, více informací mi na fb nepsal

Nahoru Odpovědět 15. června 13:22
Nic není nemožné, proto se snažím dál.
Avatar
VitekST
Člen
Avatar
Odpovídá na Patrik Neumann
VitekST:

Problém je ten, že se neodesílají E-maily z validního SMTP serveru, takže většinou služby tyto E-maily zahazují (Seznam toto dělává).

Kdybychom měli možnost použít Mail2 PEAR modul (což je vlastně knihovna), či snad PHPMailer, atd, mohli bychom specifikovat validní SMTP server, a E-maily by přicházely.

Editováno 15. června 13:58
 
Nahoru Odpovědět 15. června 13:56
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Patrik Neumann
Matúš Petrofčík:

Co si to nehodi na nejaky freehosting, nap. Endora?

// recnicka otazka, ty mi odpovedat nemusis :)

Editováno 15. června 18:16
Nahoru Odpovědět  +1 15. června 18:15
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Marek Z.
Redaktor
Avatar
Marek Z.:

Však xampp má nějaký výchozí výstup na e-maily, to nestačí?

Nahoru Odpovědět 15. června 21:16
Chybami se člověk učí, běžte se učit jinam!
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Marek Z.
Zdeněk Pavlátka:

Mělo by mi to běžet přes smtp.gmail.com, žádné chyby to nehází... Ale nikam se to nepošle, zkoušel jsem to posílat na centrum a gmail. Nic. A vaše výtvory právě opravuji, zítra tu bude vyhodnocení.

Nahoru Odpovědět  +1 15. června 23:30
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Marek Z.:

Pamatuji si, že jsem kdysi řešil podobný problém a nevyřešil jsem jej. Už jsem na to neměl sílu..

Nahoru Odpovědět 15. června 23:38
Chybami se člověk učí, běžte se učit jinam!
Avatar
Hadi.k
Člen
Avatar
Hadi.k:

Proč nemůžeme používat framework, a co je to vlastně framework ? Chápu že nemůžu použít nette, ale když si něco napíšu pro tento úkol už je to vlastně framework. Samotné mvc, se šablonama routováním, pěknyma URL už je samo o sobě vlastní framework.

Mám vlastní napsaný framework, který umí tohle vše pár řádkama a ten použít nemohu ? Jak se vlatně pak pozná zda to je framework nebo ne ? :)

To samé knihovna ? Nemužu použít něco z netu, ale když si napíšu vlastní knihovnu na něco tak tu taky nemůžu použít ? :)

Já vím, já vím, "hnidopich", ale chtělo by to určitě co ještě je a co není.

Editováno 16. června 10:57
Nahoru Odpovědět 16. června 10:56
"Ajťák" nikdy nebere telefon po prvním zazvonění!! Vždy je totiž velice vytížen - buď musí nejprve dopít ká...
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Hadi.k
Zdeněk Pavlátka:

Ideálně by celý výtvor měl být napsán v rámci soutěže - tzn. nepoužívat starší výtvory a cizí kód. Ten zákaz je hlavně kvůli těm cizím výtvorům. Smysl soutěže rozhodně není stáhnout si hotový framework z internetu. A to že použiješ svůj starší výtvor je trochu nefér k těm, co nic staršího nemají. Pokud to napíšeš v rámci dané soutěže, klidně to použij, ať už je to malá knihovnička nebo obrovský framework.

Nahoru Odpovědět 16. června 14:19
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

Díky všem za účast, zde jsou výsledky:

Eda Stehlík - 22 bodů
Kód: 20 bodů
O komentářích jsi asi v životě neslyšel, nemáš tam jediný. Kód není naformátovaný.
Na konec souborů, které obsahují čistě PHP, není třeba dávat ?>
Ve funkci registruj máš hodně vnořených podmínek. Takhle to je ještě relativně čitelné (i když NetBeans si stěžuje), ale představ si, že bys tam potřeboval přidat dalších třeba 5 podmínek... Katastrofa. Lepší je psát podmínky pod sebe a v nějaké proměnné si ukládat, zdali byly všechny splněny. Např. takhle:

$splneno = true;

if (!/* kontrola jména */) {
        // něco je špatně
        $zprava = "Zadali jste neplatné jméno!"; // ideálně by tam měly být různé hlášky podle toho, co je špatně
        $splneno = false;
}
if (!/* kontrola emailu */) {
        // ...
        $splneno = false;
}
// atd...

if ($splneno) {
        // všechny podmínky byly splněny
}

Javascript chybí úplně.

Funkčnost, použitelnost: 0 bodů
Nemáš tam index.php, takže stránky nelze spustit...

Zabezpečení: 2 body

Hashuješ pomocí SHA1, což je velmi slabý algoritmus. Sůl sice používáš, ale vždy stejnou.

Martin Štěpánek (Enormyk) - 72 bodů
Kód: 30 bodů
Kód není nejhorší (ačkoli není moc objektový), komentovaný je celkem dobře.
Dodám jen drobnou radu:
místo kódu

<?php
if ($_SESSION['overeni'] == 'ne') {
        echo('Nemáš ještě ověřený mail. <a href="index.php?znovuzasli=ano">Znovu zaslat ověřovací mail.</a>');
} else {
        echo('Úspěšně jsi se registroval a přihlásil.<br>');
        echo('Jsi přihlášen jako '.$_SESSION['mail']);
}
?>

lze použít tohle:

<?php if ($_SESSION['overeni'] == 'ne'): ?>
        Nemáš ještě ověřený mail. <a href="index.php?znovuzasli=ano">Znovu zaslat ověřovací mail.</a>
<?php else: ?>
        Úspěšně jsi se registroval a přihlásil.<br>
        Jsi přihlášen jako <?= $_SESSION['mail'] ?>
<?php endif; ?>

Funkčnost: 40 bodů
Nenašel jsem žádný problém.

Zabezpečení: 2 body
Hashuješ pomocí SHA1, což je velmi slabý algoritmus. Sůl sice používáš, ale vždy stejnou.

Matúš Petrofčík - 99 bodů
Kód: 40 bodů
Kód je objektový, komentovaný a přehledný.

Funkce validateName má poněkud divné chybové hlášky - někde mluvíš o jméně, někde o hesle.

Funkčnost, použitelnost: 40 bodů
Nenašel jsem žádný problém.

Zabezpečení: 19 bodů

Hesla hashuješ pomocí SHA512, používáš sůl. Super. Jednodušší by ale bylo použít funkci password_hash, která je k tomuhle určená a hash provádí vícekrát po sobě. (navíc se snadno používá)

VitekST - 88 bodů
Kód: 38 bodů
Krásný kód, jen těch komentářů tam moc není.

Funkčnost, použitelnost: 30 bodů
U registrace by měl být odkaz na přihlášení, U přihlášení by měl být odkaz na registraci a obnovu hesla. Nebo alespoň odkaz na úvodní stránku. Takhle když kliknu na některou z možností, dostanu se zpět jen přepsáním url. Totéž platí po aktivaci.
Pokud se nepodaří odeslat email, přesměruje mě stránka zpět na registraci, ať to zkusím znovu, ačkoli účet už je v databázi vytvořen - tím se použité uživatelské heslo zablokuje.

Zabezpečení: 20 bodů

Používáš password_hash - výborně.

Patrik Neumann - 5 bodů
Kód: 2 body
Error 404: Komentáře nenalezeny...
Kód je katastrofální, neobjektový, používáš superglobální pole, aniž by sis zkontroloval zda v něm něco je, používáš $_SESSION aniž bys předtím zavolal session_start().
PHP kód máš vložený dovnitř html místo na začátek souboru, kvůli tomu ti nefunguje přesměrování.
Nemáš ukončenou polovinu html tagů.
Údaje pro připojení k databázi máš v každém souboru spolu s kódem pro připojení.
Pro každou aktivaci účtu generuješ nový php soubor.
Pročti si zdejší články, je to tam pěkně vysvětlené.

Funkčnost, použitelnost: 3 body
Vyhazuje to hromadu chyb.
Po registraci se nikde neobjeví upozornění, že je třeba účet aktivovat.
Přihlášení nefunguje.

Zabezpečení: 0 bodů
Hashovací algoritmy SHA1 a md5 jsou jedny z nejslabších, radši použij password_hash. Navíc tam máš konstantní sůl.
Nemáš ochranu proti SQL Injection -> kdokoli se ti může nabourat do databáze. Cokoli co vkládáš do SQL dotazu musíš ošetřit. Nebo můžeš použít PDO, které to udělá za tebe.

grygerek.tomas - 80 bodů
Kód: 30 bodů
Komentáře tam občas jsou, ale nějak moc jich není, často popisují to, co je již jasné z názvu funkce.
Na konec souborů, které obsahují čistě PHP, není třeba dávat ?>
Třídy by měly být ve vlastních souborech, máš tam dost funkcí mimo třídy.
Jinak kód není špatný.

Pozn.: Nějak jsi mi zapomněl říct, jak má vypadat databáze, musel jsem to hledat v SQL dotazech...

Funkčnost, použitelnost: 30 bodů
Na hostingu ti to hází chybu při registraci (něco s databází).
Možnosti Registrace, Login a Logout by se měly zobrazovat podle toho, jestli je člověk přihlášený, ne vždy všechny. Navíc by asi měly být ve stejném jazyce...
Po registraci se nikde neobjeví upozornění, že je třeba účet aktivovat, uživatel se pak může divit, že se nelze přihlásit.
Jinak to funguje dobře.

Zabezpečení: 20 bodů

Používáš password_hash - výborně.

IT Man - 80 bodů
Kód: 35 bodů
Kód je pěkně komentovaný, objektový.
U metody Db.update máš výchozí hodnoty parametrů, ale parametry s výchozí hodnotou nemáš na konci. Platí pravidlo, že pokud má parametr výchozí hodnotu, mají ji mít i všechny za ním.
V PHP je lepší emaily validovat pomocí filter_var($email, FILTER_VALIDA­TE_EMAIL)

Nechápu, proč používáš 2 tabulky. Aktivační token máš v obou a jestli je účet aktivovaný máš v tabulce user také. Ta druhá je tam tedy úplně zbytečně.

Funkčnost, použitelnost: 30 bodů
Při obnově hesla posíláš jeho hash, ne heslo samotné. Tudíž se pak nelze přihlásit. Jinak vše funguje dobře, chválím možnost trvalého přihlášení.
Co se týče kontroly emailu:
[a-zA-Z.0-9 **** -_]+@[a-zA-Z0-9]+\.[a-z]{2,6}
Zpětné lomítko v emailu být nesmí, jinak nevím co ti na tom nefunguje.
JavaScriptová kontrola se neaktivuje při použití ctrl+v.

Zabezpečení: 15 bodů

Sůl by měla být různá pro jednotlivé účty, ne konstantní. Lepší by bylo k hashování použít funkci password_hash, která si sůl vytvoří sama.

Placku tedy získává Matúš Petrofčík Gratuluji :)

Nahoru Odpovědět  +6 16. června 18:46
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
IT Man
Redaktor
Avatar
IT Man:

Matúš Petrofčík: já ti psal, že vyhraješ. :D Gratuluji, opravdu sis to zasloužil - výborná práce prostě! :)

Jinak díky za hodnocení, škoda toho čekání ale. A to zpětné lomítko - nejedná se o neutralizaci nějakého znaku? Už si to nepamatuji. :D

Nahoru Odpovědět  +2 16. června 19:10
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Martin Konečný (pavelco1998):

Dovolim si jen přidat videonávod k těm, co používají Exceptions:
https://www.youtube.com/watch?…

 
Nahoru Odpovědět  +1 16. června 19:42
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na IT Man
Zdeněk Pavlátka:

Jedná, ale ne v hranatých závorkách.

Nahoru Odpovědět 16. června 19:51
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
VitekST
Člen
Avatar
VitekST:

Nikdo není dokonalý, ani já ne.
Gratuluji výherci. :)

 
Nahoru Odpovědět 16. června 20:47
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
IT Man:

I tam. Jak by jsi tam chtěl uvést např. znak '-'? :)

Nahoru Odpovědět 16. června 21:11
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na IT Man
Zdeněk Pavlátka:

To on tam právě měl, koukám že v hodnocení se to špatně zobrazilo:

[a-zA-Z.0-9\-_]

ale akceptovalo to jak -, tak i \

Nahoru Odpovědět 16. června 22:23
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
grygerek.tomas:

Teď na to koukám, že to na hostingu nefunguje. Já totiž v zaslaném řešení prvně poslal i hesla na DB hostingu. Heslo jsem proto změnil, ale script jsem zapomněl doopravit, protože jsem to měl dávno otestované.

Vlastní leností jsem se připravil o pár bodů, ale s tím jsem počítal.
Díky za podrobné hodnocení. Tato zpětná vazba se mi hodí :)

Ps: proč považuješ psaní ukončovacích znaků ?> v souborech pouze s funkcionalitou za "chybu"?

Editováno 16. června 22:46
Nahoru Odpovědět 16. června 22:45
Není proč se klanět.
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Matúš Petrofčík:

Dík za hodnotenie a ostatním za účasť :)

K môjmu zadaniu: Tuník mi cez hangouts ešte vytkol, že mám validáciu v AuthModel-i, no lepšie by bolo ak by bola samostatne a kontrolovalo sa to už v Controller-i, a až potom by sa volali metódy AuthModel-u.

K tomu reguláru čo tu riešite. Podľa pcre(php) ak je v zátvorkách pomlčka, netreba ju exitovať (tak sa tomu vraví?), dôkaz v obrázku podľa "regex101.com"https:/­/regex101.com kde si bežne skúšam regulárne výrazy a odporúčam aj ostatným. U JavaScriptu je to ale inak.

Nahoru Odpovědět  +2 16. června 22:49
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na grygerek.tomas
Matúš Petrofčík:

proč považuješ psaní ukončovacích znaků ?> v souborech pouze s funkcionalitou za "chybu"?

Pretože ak sa jedná čisto o PHP súbor, tak by sa za ?> mohol objaviť nejaký "biely znak", napr. nový riadok, a to by odoslalo http hlavičku prehliadaču (pretože by sa snažilo ten biely znak vypísať/vygene­rovať). No a to je problém, pretože potom nemôžeme napríklad poslať inú hlavičku (iný stavový kód, napr. 404, alebo presmerovanie).

Nahoru Odpovědět  +4 16. června 22:52
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Nahoru Odpovědět 16. června 22:53
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá na Matúš Petrofčík
grygerek.tomas:

Díky, "bílý znak" se mi ještě nepodařilo přifařit, tak jsem o tomto úskalí dosud nevěděl. Dobré vědět. Já ten kód chtěl mít hezký, teď alespoň ušetřím cca 3 znaky na soubor :D

Nahoru Odpovědět  +1 16. června 23:03
Není proč se klanět.
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 62 zpráv z 62.