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 111199×

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ů

14.11.2017 16:56 /František Kučera

Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt – tradičně první čtvrtek před třetím pátkem v měsíci: 16. listopadu od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).


Přidat komentář

12.11.2017 11:06 /Redakce Linuxsoft.cz
PR: 4. ročník odborné IT konference na téma Datová centra pro business proběhne již ve čtvrtek 23. listopadu 2017 v konferenčním centru Vavruška, v paláci Charitas, Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00. Konference o návrhu, budování, správě a efektivním využívání datových center nabídne odpovědi na aktuální a často řešené otázky, např Jaké jsou aktuální trendy v oblasti datových center a jak je využít pro vlastní prospěch? Jak zajistit pro firmu či jinou organizaci odpovídající služby datových center? Podle jakých kritérií vybrat dodavatele služeb? Jak volit součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně spravovat datové centrum? Jak eliminovat možná rizika? apod.
Přidat komentář

13.9.2017 8:00 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt – tentokrát netradičně v pondělí: 18. září od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

3.9.2017 20:45 /Redakce Linuxsoft.cz
PR: Dne 21. září 2017 proběhne v Praze konference "Mobilní řešení pro business". Hlavní tématy konference budou: nejnovější trendy v oblasti mobilních řešení pro firmy, efektivní využití mobilních zařízení, bezpečnostní rizika a řešení pro jejich omezení, správa mobilních zařízení ve firmách a další.
Přidat komentář

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

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

> Poslední diskuze

18.9.2017 14:37 / Rojas
high security vault

15.9.2017 7:33 / Wilson
new zealand childcare jobs

31.8.2017 12:11 / Jaromir Obr
Re: ukůládání dat ze souboru

30.7.2017 11:12 / Jaromir Obr
Národní znaky

27.7.2017 12:24 / Jaromir Obr
Cteni/zapis

Více ...

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