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 118714×
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í:
- 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.
- Pokud kontrolou projdeme, především uživateli poděkujeme za jeho
snahu a řekneme mu, že zbytek informací má v e-mailu.
- 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).
- Pomocí funkce mysql_insert_id si zjistíme id posledně vloženého
řádku
- 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
- 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
|
Příspívat do diskuze mohou pouze registrovaní uživatelé.
|
|
Vyhledávání software
Vyhledávání článků
28.11.2018 23:56 /František Kučera Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1
12.11.2018 21:28 /Redakce Linuxsoft.cz 22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář
6.11.2018 2:04 /František Kučera Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
4.10.2018 21:30 /Ondřej Čečák LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář
18.9.2018 23:30 /František Kučera Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
9.9.2018 14:15 /Redakce Linuxsoft.cz 20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business.
Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář
12.8.2018 16:58 /František Kučera Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář
16.7.2018 1:05 /František Kučera Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář
Více ...
Přidat zprávičku
Poslední diskuze
31.7.2023 14:13 /
Linda Graham iPhone Services
30.11.2022 9:32 /
Kyle McDermott Hosting download unavailable
13.12.2018 10:57 /
Jan Mareš Re: zavináč
2.12.2018 23:56 /
František Kučera Sraz
5.10.2018 17:12 /
Jakub Kuljovsky Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?
Více ...
|