LINUXSOFT.cz
Nazwa użytkownika: Hasło:     
    CZ UK PL

> 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 | czytane 118710×

RELATED ARTICLES KOMENTARZE   

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.


KOMENTARZE
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
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
> Szukanie oprogramowania
1. Pacman linux
Download: 4873x
2. FreeBSD
Download: 9063x
3. PCLinuxOS-2010
Download: 8561x
4. alcolix
Download: 10943x
5. Onebase Linux
Download: 9656x
6. Novell Linux Desktop
Download: 0x
7. KateOS
Download: 6239x

1. xinetd
Download: 2411x
2. RDGS
Download: 937x
3. spkg
Download: 4751x
4. LinPacker
Download: 9961x
5. VFU File Manager
Download: 3196x
6. LeftHand Mała Księgowość
Download: 7200x
7. MISU pyFotoResize
Download: 2803x
8. Lefthand CRM
Download: 3560x
9. MetadataExtractor
Download: 0x
10. RCP100
Download: 3116x
11. Predaj softveru
Download: 0x
12. MSH Free Autoresponder
Download: 0x
©Pavel Kysilka - 2003-2024 | mailatlinuxsoft.cz | Design: www.megadesign.cz