NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Michael Olšavský:6.2.2013 21:41

Tak jsme s kámošem udělali třídní web. On řešil grafiku(obrazky atd.) a já strukturu a programování. Snažil jsem se to napsat tak nějak podle MVC. Je zde možnost loginu -> chat, články, profil, administrace. Normální uživatel nemá moc možností navíc(vlastně jen ten chat), takže pokud by někdo chtěl, můžu mu dát účet administrátora. Ještě jsem akorát neudělal zprávy (uživatel - uživatel) a oznámení. Pak mám problém s fontem, jelikož neumí diakritiku některých písmen. Ale zase se mi líbí...

Budu rád za každou radu a kritiku. :-)

 
Odpovědět
6.2.2013 21:41
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Michael Olšavský
David Hartinger:6.2.2013 21:46

Vypadá to hezky :) Máš dobře ošetřená hesla? A jak řešíš ten chat?

Nahoru Odpovědět
6.2.2013 21:46
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Michael Olšavský:6.2.2013 21:48

Hesla mám escapované a šifrované přes md5 :-) .

Zprávy do chatu mám přes soubor -> zápis přes php, pomocí jquery automatický update.

 
Nahoru Odpovědět
6.2.2013 21:48
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Michael Olšavský
David Hartinger:6.2.2013 21:53

Máš u hesel sůl?

Nahoru Odpovědět
6.2.2013 21:53
New kid back on the block with a R.I.P
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na Michael Olšavský
David Jančík:6.2.2013 21:55

md5 nepoužívej šáhni raději po dobře osolené sha1 ;) Jsou servery co generují databáze s heslama kódovanýma pod md5 a je tam už hodně slov. Takže když se k těm datům někdo dostane, tak se to ve většině případů dá dešifrovat, protože uživatelé většinou volí obvyklá snadno zapamatovatelná hesla.

Nahoru Odpovědět
6.2.2013 21:55
Zapomeň, že je to nemožné a udělej to ;)
Avatar
matesax
Tvůrce
Avatar
matesax:6.2.2013 22:56

Jako vždy se dívám na kód - a toto je strašné... :)

<html5>
    <!Doctype html>
    <head>

To jsem ještě neviděl... :)

Nějak takto by to mělo vypadat:

<!DOCTYPE html>
<html lang="cs-cz">
<head>
...
</head>
<body>
...
</body>
</html>

V HTML5 ve formuláři nepoužívej neutrální span, ale k tomu určený label. JS předpokládám bude více - takže založ již teď soubor.

<span><i>(Michael Olšavský)</i></span>

Zbytečné - jakož i mnohé jiné konstrukce - osekej to.

<script src="js/jquery.js"></script>

Patří do head.

Tak malá stránka a 3 CSS soubory? :)

Moje vize:

<!DOCTYPE html>
<html lang="cs-cz">
<head>

        <meta charset="UTF-8">

        <title>Menu</title>

        <link rel="stylesheet" type="text/css" href="index.css" />

        <script type="text/javascript" src="js/jquery.js"></script>

        <script type="text/javascript">

                function Send()
                {
                    if(document.forms["form"].password.value == "" || document.forms["form"].name.value == "")
                    {
                        alert("Chybí údaje!");

                        return false;
                    }

                return true;
                }

        </script>

</head>
<body>

        <header><img src="obrazky_WWW/3A.png" style="float:left; position: static;" height="140px"/></header>

        <nav>

                <ul>

                    <li><a href="index.php?id=index" id="Novinky" title="Novinky">Menu</a></li>

                    <li><a href="index.php?id=akce" id="Akce" title="Akce">Akce</a></li>

                    <li><a href="index.php?id=fotky" id="Fotky" title="Fotky">Fotky</a></li>

                    <li><a href="index.php?frame=View/Content/rozvrh.php" id="Rozvrh" title="Rozvrh">Rozvrh</a></li>

                    <li><a href="index.php?frame=http://kavalirka.cz/suplovani/suplovtr.htm" title="Suplování">Suplování</a></li>

                </ul>

        </nav>

    <div id="login">

                <form method="POST" class="formular" id="form">

                        <label for="email">Email:</span>

                        <input type="text" name="email" placeholder="Zde zadejte svůj e-mail" />

                        <label for="passvord">Heslo:</span>

                        <input type="password" name="password" placeholder="Zde zadejte své heslo" />

                        <br />

                        <input type="submit" class="loginButton" name="submit" value="Přihlásit" />

                        <button class="loginButton" onclick="Send()" />Registrovat</button>

                </form>

    </div>

    <article>

            <h2><a href=index.php?clanek=13>Lístky na maturitní ples</a></h2>

            <i>(Michael Olšavský)</i>

            <p>Pro lístky na maturitní ples si říkejte u našeho pokladníka.</p>

            <p><i>2013-02-06</i></p>

    </article>

</body>
</html>

JS formuláře si nyní uprav - nemám čas - spím... :)

(Drobné chyby snad omluvíte, když to píši tak pozdě... :) )

 
Nahoru Odpovědět
6.2.2013 22:56
Avatar
matesax
Tvůrce
Avatar
matesax:7.2.2013 6:25

Místo třídy formulář styluj element form... Oprava a úprava:

<!DOCTYPE html>
<html lang="cs-cz">
<head>

        <meta charset="UTF-8">

        <title>Menu</title>

        <link rel="stylesheet" type="text/css" href="index.css" />

        <script type="text/javascript" src="js/jquery.js"></script>

        <script type="text/javascript">

                var uacForm,
                action =
                {
                        login: 'url',
                        register: 'url'
                };

                window.onload = function() {

                        uacForm = getElementById('uacForm');
                }

                function SendRegisterForm(currentAction)
                {
                        errorMessage = [];

                        if(uacForm.name.value == '' && currentAction == 'register')
                                errorMessage.push('Jméno je prázdné.');

                        if(uacForm.password.value == '' && uacForm.password.value != '')
                        errorMessage.push("Heslo je prázdné.");

                if(uacForm.email.value == '' && currentAction == 'register')
                                errorMessage.push('Jméno je prázdné.');

                        if(uacForm.name.value == '' && uacForm.email.value == '' currentAction == 'register')
                                errorMessage.push('Jméno i e-mail jsou prázdné.');

                        if (errorMessage.length == 0)
                        {
                                uacForm.action = action[currentAction];
                                uacForm.submit();
                        }
                        else
                                alert(errorMessage.join('\r\n'));
                }

        </script>

</head>
<body>

        <header><img src="obrazky_WWW/3A.png" style="float:left; position: static;" height="140px"/></header>

        <nav>

                <ul>

                    <li><a href="index.php?id=index" id="Novinky" title="Novinky">Menu</a></li>

                    <li><a href="index.php?id=akce" id="Akce" title="Akce">Akce</a></li>

                    <li><a href="index.php?id=fotky" id="Fotky" title="Fotky">Fotky</a></li>

                    <li><a href="index.php?frame=View/Content/rozvrh.php" id="Rozvrh" title="Rozvrh">Rozvrh</a></li>

                    <li><a href="index.php?frame=http://kavalirka.cz/suplovani/suplovtr.htm" title="Suplování">Suplování</a></li>

                </ul>

        </nav>

        <form method="post" id="uacForm">

                <label for="name">Jméno:</label>

                <input type="text" name="name" placeholder="Zde zadejte své jméno" />

                <label for="passvord">Heslo:</label>

                <input type="password" name="password" placeholder="Zde zadejte své heslo" />

                <label for="email">Email:</label>

                <input type="email" name="email" placeholder="Zde zadejte svůj e-mail" />

                <br />

                <button onclick="Send('login')">Přihlásit</button>

                <button onclick="Send('register')" />Registrovat</button>

                <h6>Pro přihlášení zadejte jméno, nebo heslo.</h6>

        </form>

    <article>

            <h2><a href=index.php?clanek=13>Lístky na maturitní ples</a></h2>

            <i>(Michael Olšavský)</i>

            <p>Pro lístky na maturitní ples si říkejte u našeho pokladníka.</p>

            <p><i>2013-02-06</i></p>

    </article>

</body>
</html>

Nastyluj element button.

Možná tam jsou ještě chybky...

Editováno 7.2.2013 6:29
 
Nahoru Odpovědět
7.2.2013 6:25
Avatar
matesax
Tvůrce
Avatar
matesax:7.2.2013 8:05

Oprava:

window.onload = function() {

    uacForm = getElementById('uacForm');
};

; chybělo...

 
Nahoru Odpovědět
7.2.2013 8:05
Avatar
Odpovídá na matesax
Michael Olšavský:7.2.2013 11:41

Ještě se na to podívám. Ale něco z toho se mi zdá trochu zbytečné. S těmi styly máš pravdu, ale už sem se několikrát setkal s názorem, že jquery se dává na konec, protože to jinak zpomaluje načítání samotné stránky.Ale díky

 
Nahoru Odpovědět
7.2.2013 11:41
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michael Olšavský
matesax:7.2.2013 12:30

Já nechápu jeho přítomnost. A osobně jej nepoužívám. Každopádně jsem toho opravil a upravil zatraceně dost.

 
Nahoru Odpovědět
7.2.2013 12:30
Avatar
Odpovídá na matesax
Michael Olšavský:7.2.2013 15:15

No nevím. To zpracování formuláře se mi zdá až moc zbytečné. Navíc mě to funguje trochu jinak. Takže jediné co si upravil je ta hlavička. Jinak ty styly byly rozdělené abych v tom měl nějaký pořádek. Musím ale uznat, že v tomhle máš pravdu.

 
Nahoru Odpovědět
7.2.2013 15:15
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michael Olšavský
matesax:7.2.2013 16:01

Tak to si to prohlédni - přidal jsem labely, kontrolu v JS,... Místo JS placeholder... Je toho fakt dost. Také zbytečné konstrukce osekány.

Editováno 7.2.2013 16:02
 
Nahoru Odpovědět
7.2.2013 16:01
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michael Olšavský
matesax:7.2.2013 16:11

Do nav - navigation nepatří formulář, ale navigace. html5 tag neexistuje, article v section - hmm,... Tak mi nepiš, že jsi měl blbě "jen kousek" - to je dost nadsázka...

Než cokoliv oficiálně vydáš, zvaliduj to:

http://validator.w3.org/

Pořádek v CSS zařiď odstraněním zbytečných ID a tříd - globalizuj. Styluj elementy, rozděl do sekcí - elementy, id a třídy, komentuj, rozděl podle layoutu atd...

Editováno 7.2.2013 16:15
 
Nahoru Odpovědět
7.2.2013 16:11
Avatar
Odpovídá na matesax
Michael Olšavský:7.2.2013 16:17

article se do section mimochodem dává ve většině případů.

 
Nahoru Odpovědět
7.2.2013 16:17
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michael Olšavský
matesax:7.2.2013 16:23

Příště mlčet - dělej si co chceš.

http://validator.w3.org/check?…

Když si pořád myslíš, že existuje html5 tag...

Editováno 7.2.2013 16:24
 
Nahoru Odpovědět
7.2.2013 16:23
Avatar
Odpovídá na matesax
Michael Olšavský:7.2.2013 16:28

O html5 tagu jsem ti neřekl ani slovo. Touhle chybou jsem si vědom. Ostatní není moc závažné. Navíc dva errory z osmi je ta reklama na endoře...

 
Nahoru Odpovědět
7.2.2013 16:28
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michael Olšavský
matesax:7.2.2013 16:31

Další vyplavou, až to opravíš. Ano - měl jsi tam pár chybiček proti pravidlům HTML. Ale pak tam máš mnoho zbytečných konstrukcí, zbytečného JS - viz. placeholder atd... Máš tam JQuery, které nepoužiješ - nač? A i kvůli 3 věcem tahat celé JQuery - proč? Atd...

Přeci nehodláš dělat tak, že toto není závažné - k čemu to pak děláš? :) (To si také mohu jen tak něco vyplivnout...)

</html5>
Editováno 7.2.2013 16:33
 
Nahoru Odpovědět
7.2.2013 16:31
Avatar
matesax
Tvůrce
Avatar
matesax:7.2.2013 16:36
  <nav>
        <a href="index.php?id=index" id="Novinky" title="Novinky">Menu</a>
        <a href="index.php?id=akce" id="Akce" title="Akce">Akce</a>
        <a href="index.php?id=fotky" id="Fotky" title="Fotky">Fotky</a>
        <a href="index.php?frame=View/Content/rozvrh.php" id="Rozvrh" title="Rozvrh">Rozvrh</a>
        <a href="index.php?frame=http://kavalirka.cz/suplovani/suplovtr.htm" title="Suplov�n�">Suplování</a>
        <div id="login">

<form method="POST" class="formular" action="" id="form" onsubmit="return Send()">
    <span style="color: #999;">Email: </span><input type="text" name="name" value="Zde zadejte svůj email" onclick="this.form.name.value=''" />
    <span style="color: #999;">Heslo: </span><input type="password" name="password" value="Zde zadejte své heslo" onclick="this.form.password.value='';" />
    <br />
    <input type="submit" class="loginButton" name="submit" value="Přihlásit" />
    <input type="button" class="loginButton" value="Registrovat" onclick="document.location.href = 'index.php?id=registration';" />
</form>

<script>
    function Send()
    {
        if(document.forms["form"].password.value == "" || document.forms["form"].name.value == "")
        {
            alert("Chybí údaje!");
            return false;
        }
        else{
            return true;}
    }
</script>
        </div>
    </nav>

Skript do head, do nav jen navigace,... (Nejlépe nav ul li)

K čemu je formulář v divu?

Editováno 7.2.2013 16:37
 
Nahoru Odpovědět
7.2.2013 16:36
Avatar
Odpovídá na matesax
Michael Olšavský:7.2.2013 16:40

Ten formulář je includovaný -> proto
Skript je ve formuláři.

Editováno 7.2.2013 16:43
 
Nahoru Odpovědět
7.2.2013 16:40
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michael Olšavský
matesax:7.2.2013 16:43

Nechápu - nikdy jsem nechápal podobné výmluvy - já v ASP generoval vždy tam kam jsem chtěl:

http://project-host.lusorion.com/

Stránka je složena z 5 částí - mám snad formulář v divu? Totéž s JS - mám tam jen jeden JS mimo soubor...

EDIT:

Ne není - blbost - skripty patří do head - a jak jsem psal - soubor by neuškodil.

Editováno 7.2.2013 16:45
 
Nahoru Odpovědět
7.2.2013 16:43
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michael Olšavský
matesax:7.2.2013 16:56

Také pořád získávat data - stejná data. Jednou získej - v onload a ulož. Pak volej uložené...

 
Nahoru Odpovědět
7.2.2013 16:56
Avatar
Odpovídá na matesax
Michael Olšavský:7.2.2013 17:20

Co přesně si tím myslel?

 
Nahoru Odpovědět
7.2.2013 17:20
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michael Olšavský
matesax:7.2.2013 17:31
document.forms["form"].password

Ulož...

 
Nahoru Odpovědět
7.2.2013 17:31
Avatar
Odpovídá na matesax
Michael Olšavský:7.2.2013 17:36

Podívám se na to. Jinak ten kód už by měl být správně. Podívej se na to. W3C hlásí chybu jen na tu reklamu.

Edit: I ta navigace by měla být dobře.

Editováno 7.2.2013 17:36
 
Nahoru Odpovědět
7.2.2013 17:36
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michael Olšavský
matesax:7.2.2013 17:47

Label nastyluj globálně:

style="color: #999;

Zvol vhodné pojmenovávání - a dalo by se tam pořád dost věcí osekat.

Ale spěje to ke konci... :) (Jen tak dál.)

 
Nahoru Odpovědět
7.2.2013 17:47
Avatar
Odpovídá na matesax
Michael Olšavský:7.2.2013 18:47

Ještě otázka: k formulářům mám dát $_SERVER['PHP_SEL­F'] a nebo nechat action prázdný?

 
Nahoru Odpovědět
7.2.2013 18:47
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michael Olšavský
matesax:7.2.2013 18:57
action="/"

Osobně bych ale udělal 2 akce - login a register - tak jak to tu mám...

 
Nahoru Odpovědět
7.2.2013 18:57
Avatar
Odpovídá na matesax
Michael Olšavský:7.2.2013 19:07

Já ale potřebuji více formulářů, protože při registraci se zadává více věcí. Poté to řeším přes funkce. Mám to programované objektově.

 
Nahoru Odpovědět
7.2.2013 19:07
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michael Olšavský
matesax:7.2.2013 19:13

Já to tak ale pochopil - že formulář máš jen jeden - protože má být jen jeden. Každopádně udělej validaci jak jsem poslal - přes mapu. A neodesílej pokud to není OK - takže místo input použij button. Při registraci nemusí být vidět login - takže takto pak udržíš jen jeden formulář... Nyní tedy jasně odděl login - a form pojmenuj inteligentně - loginForm a registerForm. Validaci udělej objektově - aby brala n důležitých inputů a když už kontroluješ chybějící údaje, kontroluj i zápis do DB přes AJAX.

OOP a PHP bych tolik nespojoval.

Editováno 7.2.2013 19:16
 
Nahoru Odpovědět
7.2.2013 19:13
Avatar
Odpovídá na matesax
Michael Olšavský:7.2.2013 19:18

Ta mapa se mi celkem líbí, ale s tím jedním formulářem bude trochu problém. Já při registraci totiž mám ještě příjmení a bude tam i rok narození a opakování hesla, takže to už by byl trochu chaos.

 
Nahoru Odpovědět
7.2.2013 19:18
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michael Olšavský
matesax:7.2.2013 19:22

Proč? Budou 2 - uděláš to jako control - partialview. A zobrazíš buď jeden, nebo druhý - nač login na register stránce? A akce také odděl - udělej to přes MVC a použij akci pouze jako akci - ne jako odkaz na stránku - v PHP pak rozděl a panuj... :) (Popis switch...)

 
Nahoru Odpovědět
7.2.2013 19:22
Avatar
Odpovídá na matesax
Michael Olšavský:7.2.2013 19:25

Jakože formulář bude nahoře v tom menu? To je jediné s čím mám problém. S php už si dokážu poradit. A ty akce mám také. Nejsou to odkazy(teda kromě té registrace).

Snad tě dobře chápu.

 
Nahoru Odpovědět
7.2.2013 19:25
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michael Olšavský
matesax:7.2.2013 19:30

Buď udělej v šabloně rovnou 2 formuláře - login a register a dej je do podmínky - pokud není register a pokud je. Jenže to jsou 2 větvení. Dále můžeš na každou stránku dávat volání generace loginformu a nedat ji jen na register stránce kde místo obsahu dáš registerform. A nebo dej login do šablony a dej mu podmínku pokud není register stránka ta aktuální...

 
Nahoru Odpovědět
7.2.2013 19:30
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michael Olšavský
matesax:7.2.2013 19:37

A s tím AJAXem to alespoň zkus - podívej se do DB na existenci uživatele atd...

 
Nahoru Odpovědět
7.2.2013 19:37
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michael Olšavský
matesax:8.2.2013 8:47

K čemu tam máš JQuery?

 
Nahoru Odpovědět
8.2.2013 8:47
Avatar
Kit
Tvůrce
Avatar
Odpovídá na matesax
Kit:8.2.2013 10:26

Proč se má do DB dívat AJAXem na existenci uživatele? Tento dotaz se zásadně posílá společně s heslem.

Nahoru Odpovědět
8.2.2013 10:26
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Kit
matesax:8.2.2013 13:40

Viděl jsem tisíce stránek kontrolující existenci uživatele již ve formuláři - jak přesně to probíhá nevím - ale když už tu kontroluje něco, proč by nemohl kontrolovat vše?

 
Nahoru Odpovědět
8.2.2013 13:40
Avatar
Odpovídá na matesax
Michael Olšavský:8.2.2013 16:50

Jquery jsem tam původně měl pro vybírání prvků, ale to moc nepoužívám. Teď tam vlastně je hlavně kvůli tomu chatu. Je to jednoduší než ajaxem. Jinak to kontrolování existence uživatelů už mam dělané přes php a zda se mi zbytečné to dělat jinak.

 
Nahoru Odpovědět
8.2.2013 16:50
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michael Olšavský
matesax:8.2.2013 17:09

Tak sám si psal, jak je to velké, a přitom to bez problému celé stáhneš pro 3 věci...

 
Nahoru Odpovědět
8.2.2013 17:09
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 39 zpráv z 39.