WebToDate/Registrace a personalizace/Tipy a návody
Možné způsoby aktivace a deaktivace registračních záznamů
Aby mohl registrovaný uživatel registrační záznam využívat, tj. přihlásit se na něj, musí být tento záznam aktivní. Z tohoto hlediska nabízí modul následující možnosti:
- záznam se stává aktivní hned při jeho vytvoření – tato možnost se nastaví tak, že se ve formuláři Předvolby nastaví Výchozí stav registrace : Aktivní.
- záznam aktivuje uživatel, který se registroval pomocí odkazu v potvrzovacím e-mailu. Funkce je vhodná zejména pro ověření platnosti zadaných e-mailů. Tato možnost se nastaví tak, že se ve formuláři Předvolby nastaví Výchozí stav registrace : Neaktivní, zvolí se zde Zasílat potvrzení : Nové registrace a zaškrtne se Aktivace z e-mailu. Musí být správně nadefinovaná předloha pro tyto e-maily včetně klíčového slova <!--WTD_REGISTR(ACTURL)-->, které dosadí do e-mailu aktivační URL.
- záznam aktivuje ručně obsluha modulu. Tato možnost se nastaví tak, že se ve formuláři Předvolby nastaví Výchozí stav registrace : Neaktivní. Dále je vhodné pomocí nastavení Zasílat administrátorovi : nové registrace generovat e-mailová upozornění na nové registrace. Záznamy uživatelů se upravují pomocí funkce Data – Uživatelé, v kartě uživatele je zaškrtávací okénko Aktivní, které je třeba zaškrtnout a formulář uložit.
Záznamy mohou mít rovněž datum expirace, podle kterého lze řídit vypršení platnosti záznamu, tj. jeho deaktivaci. Aby se deaktivace automaticky prováděly, musí být v pravidelných intervalech spouštěna plánovaná úloha Expirace registrovaných uživatelů. Možnosti nastavení data expirace jsou následující:
- Datum je nastavováno automaticky jako určitý počet dní od data registrace. Toto se nastaví ve formuláři Předvolby ve volbě Datum expirace automaticky, možnost vložit x dnů po registraci.
- Datum je nastavováno automaticky jako určitý počet dní od data aktivace. Toto se nastaví ve formuláři Předvolby ve volbě Datum expirace automaticky, možnost vložit x dnů po aktivaci. Pokud se aktivace provádí ručně z administračního rozhraní, doplní se datum v praxi při první aktivaci. Pokud se následně záznam deaktivuje a po nějaké době zase aktivuje, datum expirace se již automaticky nezmění.
- Datum se zadá ručně v administračním rozhraní ve formuláři pro úpravu registračního záznamu.
Další manipulace s daty expirace (např. prodloužení platnosti apod.) je třeba již řešit ručně přímou úpravou registračního záznamu uživatele.
Ukládání, zpracování a využívání údajů anonymních uživatelů
Pokud modul nějakým způsobem aktivně pracuje s uživateli veřejné části (např. obsahuje vstupní formuláře s osobními daty uživatele) nebo dokonce má být přístupný pouze pro registrované uživatele, využívá knihovny a funkce modulu Registrace a personalizace.
Tyto funkce mají za cíl:
- Standardizovanou metodou ošetřit přístup ke stránkám určeným pouze pro registrované uživatele
- Vést databázi anonymních uživatelů a sbírat osobní údaje těchto uživatelů
- Použít informace z databáze anonymních či registrovaných uživatelů tak, aby uživatel nemusel vyplňovat opakovaně údaje již jednou na server zadané.
Každý modul, u kterého to má smysl (nebo jeho část), je přepnutelný z hlediska přístupu uživatelů do jednoho ze čtyř výše zmíněných režimů (např. Pouze registrovaní, explicitní přihlášení apod.).
Pro manipulaci s osobními údaji se používají následující zásady:
- Údaje uživatele potřebné pro práci modulu se vždy ukládají to příslušné tabulky konkrétního modulu (např. zadává-li v modulu Poradny uživatel svůj e-mail, na který mu má přijít odpověď z poradny, zapíše se tento e-mail do databáze dotazů poradny).
- Osobní údaje uživatele se kromě datových tabulek modulů zapisují do tabulky anonymních uživatelů ve všech případech s výjimkou toho, kdy je daný modul v režimu Anonymní uživatelé bez rozpoznávání.
- Osobní údaje se předvyplňují do formulářů ve všech případech kromě toho, kdy je modul přepnut do režimu Anonymní uživatelé bez rozpoznávání. Přitom se data načítají z tabulky anonymních uživatelů v případě, že je modul v režimu Anonymní uživatelé, automatické rozpoznávání, z tabulky registrovaných v ostatních případech.
- Data v tabulce registrovaných uživatelů se nikdy nemění automaticky, vždy pouze explicitně v rámci modulu Registrace a personalizace (registračním formulářem nebo z administrační části).
Data modulu Registrace a personalizace se nacházejí v tabulkách s názvem začínajícím X (viz následující kapitola). Struktura uložených dat uživatelů je schématicky znázorněna na následujícím diagramu.
Uživatel částí vyžadujících registraci a i ostatních modulů je opatřen XUSERID, na které jsou navázána všechna data tohoto uživatele. V tomto pojetí se pak registrace (XREGISTR) považuje za další datovou strukturu svázanou s daným XUSERID. Možný postup plnění tabulek v čase je pak např. následující:
- Uživateli se při návštěvě nějaké stránky modulu přiřadí nějaké GUID. To automaticky neznamená, že se něco zapisuje do databáze.
- Uživatel např. něco zapíše do anonymní diskusní skupiny – v tom případě vznikne zápis v XUSERGUID, XUSER a tabulkách diskusí.
- Uživatel se zaregistruje – vznikne zápis v XREGISTR odkázaný na příslušné XUSERID.
- Dokud nedojde k nestandardní situaci, na dané USERID se odkazují další a další záznamy v datových tabulkách modulů.
- Pokud dojde ke ztrátě cookie apod. (obdobná logická situace může nastat v případě, že uživatel např. používá dva počítače a přihlašuje se k databázi registrovaných uživatelů), může dojít k problémové situaci: díky nějaké činnosti se tomuto uživateli přidělilo nové GUID, XUSERID i eventuálně nějaké záznamy v datových tabulkách modulů. Pokud se potom uživatel následně přihlásí k registrované databázi, dochází k logickému konfliktu – má v tuto chvíli dvě USERID, kterým mohou v datových tabulkách odpovídat dvě sady dat. Konflikt se v rámci přihlašovacího skriptu řeší tímto postupem (USER1 je starší číslo platné do ztráty cookie, USER2 je nové číslo spřažené s novým cookie):
- V XUSERGUID se XUSERID přepíše u USER2 na USER1 pro aktuálně platné GUID
- Projdou se všechny tabulky všech modulů, ve kterých se vyskytuje nové USER2 a přesměrují se na USER1 podle tohoto pravidla: je-li v dané tabulce USER2, přečíslují se tyto záznamy na USER1 s výjimkou tabulek XREGISTR A XANONYMOUS; v XREGISTR se nikdy nic nemění, v XANONYMOUS platí, že je-li v dané tabulce pouze USER2, přečíslují se tyto záznamy na USER1, pokud jsou v dané tabulce USER1 i USER2, záznamy USER2 se mažou (přednost musí mít data svázaná s registrací)
- V tabulce XUSERGUID a XUSER se smažou záznamy s USER2, neboť již nikam neukazují.
Fungování lze v praxi ozřejmit na následujícím příkladu:
Modul Poradny a rozhovory má implementovanou poradnu, ve které je nastaveno Přihlašovací režim : Rozpoznávat anonymní uživatele. Ve formuláři pro zadání nového dotazu je položka pro přezdívku:
<input type="text" name="nickname" value="<!--WTD_USER(NICKNAME)-->" maxlength="80" />
Uživatel zadá nějaký dotaz do poradny a vyplní toto pole. Jeho hodnota bude v tu chvíli (kromě tabulky pro dotazy v poradně) uložena v databázi v poli XANONYMOUS.NICKNAME.
Modul Diskuze má implementovanou diskuzi, ve které je opět nastaveno Přihlašovací režim : Rozpoznávat anonymní uživatele. Ve formuláři pro nový diskuzní příspěvek je pole pro přezdívku:
<input type="text" name="nickname" value="<!--WTD_USER(NICKNAME)-->" />
Ve chvíli, kdy se prázdný formulář zobrazí, je zde za klíčové slovo <!--WTD_USER(NICKNAME)--> vložena uchovaná přezdívka z XANONYMOUS.NICKNAME, tj. pole je již předvyplněno Pokud uživatel přezdívku nezmění, provede se ve chvíli uložení diskusního příspěvku zápis pouze do odpovídající tabulky diskuzí, pokud dojde ke změně, aktualizuje se i obsah pole XANONYMOUS.NICKNAME touto naposledy zadanou hodnotou.
Avatary
Součástí modulu Registrace a personalizace je možnost vkládat avatary, tj. malé ikony s obrázky uživatelů, které se mohou následně zobrazovat např. v seznamech diskuzních příspěvků modulu Diskuze.
Je tedy možné:
- Do registračního formuláře pro novou registraci vložit pole pro upload obrázku avataru
- Do registračního formuláře pro změnu existující registrace vložit odkaz pro odstranění avataru z registračního profilu a pole pro upload obrázku avataru, pomocí kterého uživatel změní svůj avatar
- Do stránky s potvrzením registrace (nové i změny registrace) vložit zobrazení obrázku s avatarem.
První kroky
V předvolbách modulu je třeba povolit ukládání avatarů a nastavit další parametry. Výchozí adresář pro ukládání avatarů je /images/avatars/, cestu je možné eventuálně změnit. Dále se v předvolbách nastavují povolené koncovky souborů pro obrázky s avatary, maximální velikost a maximální rozměry.
Na úrovni konfigurace přístupových práv systému je třeba na serveru povolit ukládání a změny souborů pro uživatele, pod kterým běží web server v adresáři, který je zvolen pro ukládání avatarů.
Formulář pro novou registraci a změnu registrace musí být v HTML kódu změněn na
<form action="/scripts/modules/registration/registration.php" method="post" enctype="multipart/form-data">
čili musí být uvedeno enctype="multipart/form-data".
Implementace
Část registračního formuláře pro novou registraci či změnu registrace může vypadat např. následovně:
<tr><td>Avatar</td>
<td>
<!--WTD_IF(NOAVATAR,"<input type="file" name="avatarfile">")-->
<!--WTD_IF(HASAVATAR,"<img src="<!--WTD_REGISTR(AVATARFILE)-->" width="<!--WTD_REGISTR(AVATARWIDTH)-->" height="<!--WTD_REGISTR(AVATARHEIGHT)-->" alt="Váš avatar" /> <a href="<!--WTD_REGISTR(REMOVEAVATARURL)-->">Odstranit avatar</a>")-->
</td>
</tr>
Využívá se zde podmíněné vkládání podle toho, zda uživatel již má či nemá avatar, tudíž je stejný kód použitelný pro novou registraci i její změnu. Pole <input type="file" name="avatarfile"> slouží pro upload avataru, ostatní klíčová slova slouží pro zobrazení avataru resp. pro zobrazení odkazu na smazání avataru.
Pokud je využívána možnost zobrazit stránku pro potvrzení registračních údajů, lze v ní použít kód zhruba ve tvaru
<tr><td>Avatar</td>
<td>
<!--WTD_IF(NOAVATAR,"Není vložen avatar")-->
<!--WTD_IF(HASAVATAR,"<img src="<!--WTD_REGISTR(AVATARFILE)-->" alt="Váš avatar" />")-->
</td>
</tr>
Pokud tedy uživatel nevložil avatar, zobrazí se pouze informační text, v opačném případě je v potvrzovací stránce obrázek s avatarem.
Avatary lze vkládat a měnit jednotlivým uživatelům i z administračního rozhraní, jak je popsáno v kapitole Data.