Autor | Zpráva | ||
---|---|---|---|
theNookyn Profil |
#1 · Zasláno: 8. 4. 2011, 18:31:03 · Upravil/a: theNookyn
Udělal jsem s pomocí kamaráda nedodělanou aplikaci pro uživatelskou část. Mám jen registraci a protože jsem dnes pochopil jak na OOP, tak se chci zeptat jestli by se dalo ještě něco změnit/zlepšit.
<?php require("db.php"); class Uzivatele{ function registrace($prezdivka, $email, $heslo){ $prezdivka = str_replace(" ", "_", $prezdivka); if(!empty($prezdivka) AND !empty($email) AND !empty($heslo)){ $pocet_uzivatelu = mysql_num_rows(mysql_query("SELECT * FROM uzivatele WHERE email='".$email."'")); if($pocet_uzivatelu<1){ $query = "INSERT INTO uzivatele (prezdivka, email, heslo, ip, datum) VALUES ('".mysql_real_escape_string($prezdivka)."', '".mysql_real_escape_string($email)."', '".sha1(md5($heslo))."', '".$_SERVER['REMOTE_ADDR']."', now())"; if(mysql_query($query)==true){ print "Úspěšně zaregistrován!"; }else{ print "Chyba při registraci!"; } }else{ print "Tento email je již použit!"; } }else{ print "Pole nesmí být prázdné!"; } } } $uzivatel = new Uzivatele; $uzivatel->registrace("Nookyn", "theNookyn@gmail.com", "test"); ?> Chybí mi ještě upravení profilu uživatele a zobrazení profilu. |
||
Tori Profil |
#2 · Zasláno: 8. 4. 2011, 18:47:05 · Upravil/a: Tori
theNookyn:
Mohlo by tam být aspoň přihlášení/odhlášení, případně smazání uživatele. Pokud budete mít i několik typů uživatelů s různými oprávněními, tak by těch funkcí bylo potřeba více (blokování uživatelů, změny oprávnění apod.) Jinak osobně bych místo print "Výsledek akce" jen vracela tu chybovou hlášku (v případě chyby) anebo true (když všechno proběhne jak má). Ale možná na tohle ostatní budou mít jiný názor. |
||
Tirus Profil |
#3 · Zasláno: 8. 4. 2011, 19:03:04 · Upravil/a: Tirus
theNookyn:
jak řekla Tori, ale myslím. že k tomu budeš stejně směřovat. můžu ti ukázat své co sám ještě dělám. Neni to úžasná práce, ale pro inspiraci. Sám se OOP učím. Odkaz Sám momentálně koukám, že mi tam chybí kontrola duplicity |
||
theNookyn Profil |
#4 · Zasláno: 8. 4. 2011, 19:06:54 · Upravil/a: theNookyn
Tori:
Toto je jen uživatelská část, nikoliv administrátorská. Z pohledu uživatele bych radši volil možnost print "Výsledek akce", než vypsání celé chyby. Navíc neni problém ten kus přepsat tak, aby se dala ta chyba zjistit. // Až budu mít více, určitě ještě dodám. Tirus: Určitě se podívam na tvé práce :) |
||
Tirus Profil |
#5 · Zasláno: 8. 4. 2011, 19:10:05
theNookyn:
s tím smazáním uživatele, dej ho tam.. nebuď jak na facebooku :) ... uživatel by měl mít právo si sám smazat svůj účet. |
||
theNookyn Profil |
#6 · Zasláno: 8. 4. 2011, 19:14:48
Tirus:
Já jsem si na facebooku "smazal" (deaktivoval) účet už 4× s tím, že se už nikdy na fb nevrátím. Ale opak byl pravdou, hned po pár hodinách jsem zase projížděl příspěvky. To mě zaráží ještě teď že nenechají člověka si smazat účet. |
||
Tirus Profil |
#7 · Zasláno: 8. 4. 2011, 19:16:49
theNookyn:
proto ti to říkám. Uživatel by měl mít právo s jeho účtem (resp. údaji) nakládat jak myslí (ovšem aby neohrozil tvoji aplikaci) |
||
Tirus Profil |
#8 · Zasláno: 8. 4. 2011, 19:38:36
theNookyn:
udělal jsem ve svém kódu pár úprav, včetně kontroly duplicity uživatelského jména a emailu. Když tě k tomu něco napadně, či tam něco objevíš. Napiš, budu rád. |
||
theNookyn Profil |
#9 · Zasláno: 8. 4. 2011, 19:41:44
Tirus:
Ok. A děkuji za inspiraci :)! |
||
Tirus Profil |
#10 · Zasláno: 8. 4. 2011, 19:45:20
theNookyn:
pak se poděl semnou ;) .. v mém profilu najdeš email ;) tak se klidně ozvi |
||
theNookyn Profil |
#11 · Zasláno: 8. 4. 2011, 19:54:21
Tirus:
Určitě napíšu :D |
||
joe Profil |
#12 · Zasláno: 8. 4. 2011, 21:16:43
1. Rozmysli si název třídy, buď Uživatel nebo Uživatelé a pak s tím dále počítej. Třídu máš pojmenovanou Uživatelé a přiřazuješ ji do proměnné $uzivatel
2. Nauč se používat vyjímky, v budoucnu to usnadní práci. 3. Z funkcí vracej nějaké hodnoty - TRUE/FALSE/NULL nebo nějaký řetězec, podle kterého poznáš, jak se funkce vykonala 4. Při vkládání do databáze je dobré z té funkce vracet číslo vloženého řádku 5. sha1(md5($heslo)) tohle je zbytečné, místo toho přidej k heslu raději nějaký řetězec, nejlépe pro každého uživatele jiný, stačí tedy použít třeba jen sha1($heslo . 'neco') |
||
Tirus Profil |
#13 · Zasláno: 8. 4. 2011, 21:22:17
joe:
k tomuhle se přidám i já... máš po ruce nějakej článek o vyjímkách či ne? :) |
||
Bertram Profil |
#14 · Zasláno: 8. 4. 2011, 21:50:36
Já bych asi třídu uživatel nezanášel registrací, ale vytvořil třídu registrace která by se o tuto funkčnost starala spolu s validací a věcmi s tím spojené.
|
||
theNookyn Profil |
#15 · Zasláno: 8. 4. 2011, 21:51:19
joe:
vyjímky? ještě jsem o nich neslyšel... |
||
Bertram Profil |
#16 · Zasláno: 8. 4. 2011, 22:54:53
Pouze demonstrativní příklad jak třídy Registration, tak i zpracování vyjímky.
<?php class RegistrationException extends Exception { } class Registration { // místo databáze private $userName = "theNookyn"; public function isValidUserName($name) { //Pokud se toto userName už používá, vyhodí se výjimka. if($name == $this->userName) { throw new RegistrationException("<p style='color:red'>Uživatelské jméno \"$name\" se už používá!</p>"); } else { print "<p>Uživatelské jméno \"$name\" je jedinečné</p>"; } } } try { $objRegistrace = new Registration; $objRegistrace->isValidUserName ('Lojza'); $objRegistrace->isValidUserName ('theNookyn'); } catch (RegistrationException $e) { print ($e->getMessage()); } ?> |
||
blizzboz Profil |
#17 · Zasláno: 9. 4. 2011, 18:25:15
theNookyn:
to čo si predviedol neni OOP, je tam len jedna procedúra ktorú si obalil do triedy. pri OOP tvoria základ architektúry dáta, nie procedúry a funkcie. |
||
theNookyn Profil |
#18 · Zasláno: 9. 4. 2011, 18:41:37
S OOP začínam, tak je jasné, že ze začátku nebudu mít celý script na jedničku.
|
||
Časová prodleva: 13 let
|
0