LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> PHP (70) - Registrace uživatelů na portálu

Dnes si ukážeme, jak by se dala na portálu pomocí PHP provádět registrace uživatelů.

24.11.2004 15:00 | Petr Zajíc | Články autora | přečteno 108298×

Komerční sdělení: Pořádáme Kurzy PHP

Poté, co jsme vyřešili základní navigaci, budeme dnes pokračovat v našem hudebním portálu věcmi, které zajistí jeho funkcionalitu. Pojďme si nejprve projít zadání a rozhodnout se, čím začít.

Čím začít

V předminulém díle seriálu jsme si stanovili jakýsi cílový koncept celé aplikace. Když si jej pořádně přečtete, zjistíte, že se skládá ze čtyř hlavních věcí - koncerty, diskografie, texty písní a uživatelé. Texty písní mají být k dispozici pouze registrovaným uživatelům, zadávat koncerty smí jen uživatel - administrátor. Z toho vyplývá, že by bylo praktické začít nějakými skripty pro uložení uživatelů, abychom na to později mohli navázat.

Připomeňme, že s uživatelem by portál měl být schopen provádět následující kousky:

  • registrace (přezdívka, mail, heslo)
  • změna hesla
  • odeslání zapomenutého hesla
  • zrušení registrace

Budeme postupovat tak, že každou z akcí bude realizovat nějaký PHP skript. Celkem budeme tedy mít 4 skripty, které se budou jmenovat registrace.php, zmenahesla.php, zapomenuteheslo.php a zruseniregistrace.php.

Pozn.: V praxi byste možná zvolili kratší názvy souborů. Někdo se rovněž rozhodne používat anglické názvy ve stylu useradd, userdel a podobně. My to uděláme takto z výukových důvodů.

Databáze

Je jasné, že na uložení informací o uživatelích bude sloužit jedna tabulka v databázi mysql. Když se nad tím zamyslíte, bude potřeba ukládat následující věci:

  • přezdívku uživatele
  • jeho e-mail
  • jeho heslo

Nicméně, pokud se nad tím zamyslíte trochu hlouběji, zjistíte rovněž, že přímo do této tabulky bychom mohli ukládat informaci o tom, zda je daný uživatel administrátorem (můžete mít více administrátorů). Stejně tak z potřeby na odeslání zapomenutého hesla maximálně 1x denně vyplývá, že bude užitečné sledovat datum a čas, kdy se naposledy odesílalo zapomenuté heslo, a patří to logicky do téže tabulky.

Nebudeme chtít, aby se uživatelé přihlašovali pod falešným e-mailem, takže instrukce pro dokončení registrace budou zaslány na uvedený e-mail a my budeme považovat registraci za úspěšnu pouze v případě, kdy uživatel splní instrukce z e-mailu. Pro databázi to znamená, že zavedeme pole registracedokoncena, které nastavíme až v případě, že si uživatel přečte instrukce z mailu, který při registraci uvedl a provede je. Rovněž teprve poté budeme považovat registraci za dokončenou.

V praxi ještě bývá zvykem mít možnost dočasně znemožnit uživateli přihlášení pomocí nějakého příznaku u jeho záznamu v databázi, například pokud uživatel příliš obtěžuje v diskusích. Z důvodů souvisejících z databází bude rovněž užitečné jednotlivé řádky číslovat pomocí sloupce s automatickým přírůstkem. Celkem shrnuto budeme mít tedy 8 polí a SQL příkaz pro návrh tabulky by potom mohl vypadat následovně:

CREATE TABLE `uzivatele` (
`id` INT NOT NULL AUTO_INCREMENT ,
`prezdivka` VARCHAR( 50 ) NOT NULL ,
`email` VARCHAR( 50 ) NOT NULL ,
`heslo` VARCHAR( 10 ) NOT NULL ,
`jeadmin` TINYINT DEFAULT '0' NOT NULL ,
`pripomenuto` DATETIME NULL ,
`registracedokoncena` TINYINT DEFAULT '0' NOT NULL ,
`jeblokovan` TINYINT DEFAULT '0' NOT NULL ,
PRIMARY KEY ( `id` )
);

Asi jste si všimli, že v databázi ukládáme heslo tak, jak jej uživatel zadal. To je z principu dost nebezpečné. Návod, jak to udělat lépe, byl v seriálu již popsán. Dělám to kvůli jednoduchosti.

Registrační skript

Registrační skript registrace.php by měl obsahovat především formulář pro zadání přezdívky, jména a hesla. To se následně odkontroluje a uloží do databáze. Na e-mail uvedený v registraci bude zaslána zpráva obsahující url, které musí uživatel navštívit, aby byla jeho registrace dokončena. Jakmile toto url uživatel navštíví, v databázi nastavíme příznak 'registracedokoncena' na jedničku a uživatel se bude moci přihlásit.

Při tvorbě formuláře si vypůjčím informace z 25. dílu našeho seriálu (o zpracování formulářů), takže pokud jste jej nečetli, možná je ten správný čas udělat to nyní. Při odeslání formuláře budeme provádět následujících 5 kontrol, než jej prohlásíme za správně vyplněný:

  • zda zadaný údaj e-mail obsahuje platný formát e-mailu
  • zda tam již e-mail není
  • zda tam již přezdívka není
  • zda je přezdívka mezi 3 a 50 znaky délky
  • zda je heslo 3 až 50 znaků dlouhé

Na skript v celé jeho kráse se můžete podívat, a trochu jej okomentuji. Vlastní formulář je zabalen do tabulky, aby byl na stránce alespoň trochu zarovnán. Jakmile uživatel vyplní požadovné údaje, provede se několik věcí:

  1. Nejprve se zadané údaje zkontrolují. Všimněte si, že na kontrolu toho, zda zadaná přezdívka či e-mail již nejsou v databázi obsaženy jsem sestavil dvě samostatné funkce emailvdb a prezdivkavdb.
  2. Pokud kontrolou projdeme, především uživateli poděkujeme za jeho snahu a řekneme mu, že zbytek informací má v e-mailu.
  3. Následně vložíme e-mail, přezdívku a heslo do databáze. V tabulce uzivatele vznikne nový řádek. Pole jeadmin, registracedokoncena a jeblokovan se přitom nastaví na nulu, protože to je jejich výchozí hodnota (a žádné konkrétnější zadání jsme neupřesnili). Pole id se nastaví na nejnižší nepoužité id v tabulce (o tyto "drobnosti" se stará mysql).
  4. Pomocí funkce mysql_insert_id si zjistíme id posledně vloženého řádku
  5. Sestavíme e-mail obsahující instrukci, že k dokončení registrace uživatel musí navštívit danou stránku a tento e-mail odešleme
  6. Skript registracedokoncene.php se postará o to, že daný uživatel bude mít v databázi příznak registracedokoncena nastaven na jedničku, protože je jasné, že četl zaslaný e-mail a tudíž jeho e-mailová adresa je platná a funkční.

Na současný stav projektu se můžete na našem webu podívat nebo si jej můžete stáhnout.

Pozn.: Aby Vám stažená verze fungovala na lokálním stroji, upravte si hodnotu konstant SQL_HOST, SQL_USERNAME, SQL_PASSWORD a SQL_DBNAME. Případně si je můžete včlenit do konfiguračního souboru podobně, jako jsem to udělal v souboru func.php.

Verze pro tisk

pridej.cz

 

DISKUZE

nacitanie pola do databazy 24.11.2004 17:35 Martin
Pole a databáze 24.11.2004 19:32 Petr Zajíc
L Re: Pole a databáze 26.11.2004 17:55 Martin
e-mail 11.8.2006 10:23 Tomáš Koutecký
|- Re: e-mail 11.8.2006 12:31 Aleš Hakl
| L Re: e-mail 11.8.2006 19:43 Tomáš Koutecký
|   L Re: e-mail 11.8.2006 22:19 Aleš Hakl
L Re: e-mail 14.8.2006 10:53 Petr Zajíc
  L Re: e-mail 14.8.2006 12:03 Aleš Hakl
    L Re: e-mail 14.8.2006 18:12 Petr Zajíc
      L Re: e-mail 14.8.2006 18:58 Aleš Hakl
        L Re: e-mail 14.8.2006 20:32 Petr Zajíc
          L Re: e-mail 17.8.2006 14:35 Tomáš Koutecký
            L Re: e-mail 18.8.2006 19:18 Ondřej Čečák
Mozno trochu hlupa otázka ale skúsim to: 23.10.2006 18:33 Jeff
|- Re: Mozno trochu hlupa otázka ale skúsim to: 24.10.2006 08:13 Ondřej Čečák
L Re: Mozno trochu hlupa otázka ale skúsim to: 24.10.2006 12:10 Mlan Dvořák
  L Re: Mozno trochu hlupa otázka ale skúsim to: 27.5.2007 20:00 Ales Nemo
nefungující registrace 7.11.2006 20:22 Pavel Jastrzembski
L Re: nefungující registrace 7.11.2006 23:09 Ondřej Čečák
  L Re: nefungující registrace 8.11.2006 08:57 Pavel Jastrzembski
    L Re: nefungující registrace 10.11.2006 18:29 Pavel Jastrzembski
E-mail 10.11.2006 19:51 Pavel Jastrzembski
prihlasenie 28.12.2006 00:41 Miso
L Re: prihlasenie 28.12.2006 18:57 Petr Zajíc
POMOC 5.5.2007 21:31 djbobek
Formulare predvyplnene nesmyslem :( 9.11.2007 10:31 marihuanek
Nefim co mam robit 20.11.2007 18:56 likom
problem s e-mailem 6.12.2007 19:49 negr
Help 7.10.2008 13:15 jozifek
Aktivační emaily 23.10.2008 21:48 Lukáš 'Lukyn' Satrapa
L Re: Aktivační emaily 2.5.2011 02:11 Patrick "Kusoš" Kusebauch
dokončení registrace 13.4.2010 18:30 Václav Nešpor
Databáze 2.5.2011 02:15 Patrick "Kusoš" Kusebauch
email 31.5.2014 14:50 Jožko Mrkvička




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

27.2.2017 22:12 /František Kučera
Pozvánka na 137. sraz OpenAlt – Praha: Tentokrát jsme si pro vás připravili neobvyklou akci. Ve středu 1.3. v 17:30 nás přivítá sdružení CZ.NIC ve svých prostorách v Milešovské ulici číslo 5 na Praze 3, kde si pro nás připravili krátkou prezentaci jejich činnosti. Následně navštívíme jejich datacentrum pod Žižkovskou věží. Provedou nás prostory, které jsou běžnému smrtelníkovi nedostupné!
Po ukončení prohlídky se všchni odebereme do hostince U vodoucha, Jagelonská 21, Praha 3 pochutnat si na některém z vybraných piv či dát si něco na zub. Rezervaci máme od 19:30, heslo je OpenAlt.
Ale pozor! Do prostor datového centra máme omezený přístup, dostane se tam pouze 10 lidí! Takže kdo přijde dříve, ten má přednost, a občanky s sebou! Kdo nebude chtít na prohlídku datového centra, může se pomalu přesunout do hostince U vodoucha a u nepřeberné nabídky piv počkat na ostatní.
Přidat komentář

18.1.2017 0:49 /František Kučera
Členové a příznivci spolku OpenAlt se pravidelně schází v Praze a Brně. Fotky z pražských srazů za uplynulý rok si můžete prohlédnout na stránkách spolku. Příští sraz se koná už 19. ledna – tentokrát je tématem ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. Také budete mít příležitost si prohlédnout pražský hackerspace Brmlab.
Přidat komentář

8.1.2017 17:51 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 19. ledna od 18:30 v pražském hackerspacu Brmlab. Tentokrát je tématem srazu ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. K vidění bude mechanická klávesnice dasKeyboard, trackball Logitech nebo grafický tablet (a velký touchpad) Wacom. Přineste i vy ukázat svoje zajímavé klávesnice a další HW. V 18:20 je sraz před budovou, v 18:30 jdeme společně dovnitř, je tedy dobré přijít včas. Podle zájmu se později přesuneme do nějaké restaurace v okolí.
Přidat komentář

1.12.2016 22:13 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.
Komentářů: 1

4.9.2016 20:13 /Pavel `Goldenfish' Kysilka
PR: Dne 22.9.2016 proběhne v Praze konference Cloud computing v praxi. Tématy bude např. nejnovější trendy v oblasti cloudu a cloudových řešení, provozování ERP v cloudu, o hostování různých typů softwaru, ale třeba i o zálohování dat nabízeném podnikům formou služby.
Přidat komentář

1.9.2016 11:27 /Honza Javorek
Česká konference o Pythonu, PyCon CZ, stále hledá přednášející skrz dobrovolné přihlášky. Máte-li zajímavé téma, neváhejte a zkuste jej přihlásit, uzávěrka je již 12. září. Konference letos přijímá i přednášky v češtině a nabízí pomoc s přípravou začínajícím speakerům. Řečníci mají navíc vstup zadarmo! Více na webu.
Přidat komentář

27.8.2016 8:55 /Delujek
Dnes po 4 letech komunitního vývoje vyšla diaspora 0.6.0.0
diaspora* je open-source, distribuovaná sociální síť s důrazem na soukromý
Více v oficiálním blog-postu
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

16.3.2017 16:33 / BezvaDesign.cz
Re: Hledám grafika do teamu

9.3.2017 11:44 / Jaromir Obr
Re: chyba

18.1.2017 20:18 / martin horky
Spolupraca linuxu a microsoftu

17.1.2017 9:57 / Pavel Hrubeš
Re: Externí USB televizní karta

4.1.2017 11:24 / Marcum
extension to house

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze