WebToDate/Registrace a personalizace/Tipy a návody: Porovnání verzí

Z WebToDate
Skočit na navigaciSkočit na vyhledávání
m Nahrazení textu „[[Category:WebToDate 4.1“ textem „[[Category:WebToDate“
 
(Není zobrazena jedna mezilehlá verze od stejného uživatele.)
Řádek 126: Řádek 126:


Avatary lze vkládat a měnit jednotlivým uživatelům i z administračního rozhraní, jak je popsáno v kapitole [[../Reference#Data|Data]].
Avatary lze vkládat a měnit jednotlivým uživatelům i z administračního rozhraní, jak je popsáno v kapitole [[../Reference#Data|Data]].
== Zobrazování informací o přihlášeném uživateli ==
Modul obsahuje aparát pomocí kterého lze zobrazovat v prezentační části webu informace o aktuálně přihlášeném uživateli. Tento aparát podporuje zobrazování v dynamických stránkách, tj. ve zprávách, ve stránkách zobrazovaných dynamicky a ve stránkách modulů. Pokud jsou stránky generované staticky (typicky úvodní stránka webu, stránky sekcí apod.), není zde jednoduchá možnost zobrazit informace o přihlášeném uživateli podporována.
Nejprve je třeba zaregistrovat extenzi modulu ''_user_inc.php'' (viz [[../Instalace#Umístění extenzí|Umístění extenzí]]).
Pak je třeba do šablon resp. předloh stránek ve kterých se mají údaje zobrazovat umístit kód, pomocí kterého se tyto údaje zobrazují, typicky cca
<code>
<nowiki><!--WTD_IF(USERLOGGEDIN,"<div>Jste přihlášen jako <strong><!--WTD_REGISTR(FIRSTNAME)--> <!--WTD_REGISTR(LASTNAME)--></strong>,
odhlásit se můžete <a href="/scripts/modules/registration/logout.php">zde</a>.</div>")--></nowiki>
</code>
Extenze podporuje podmíněné vkládání HTML kódu v případech že uživatel je či není přihlášen, a vložení základních informací o uživateli (křestní jméno, příjmení apod.). Více viz [[../Reference#Klíčová slova modulu|Klíčová slova modulu]].

Aktuální verze z 10. 5. 2017, 11:02

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:

  1. 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í.
  2. 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.
  3. 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 DataUž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í:

  1. 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.
  2. 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í.
  3. 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í:

  1. 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.
  2. 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í.
  3. Uživatel se zaregistruje – vznikne zápis v XREGISTR odkázaný na příslušné XUSERID.
  4. Dokud nedojde k nestandardní situaci, na dané USERID se odkazují další a další záznamy v datových tabulkách modulů.
  5. 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.


Zobrazování informací o přihlášeném uživateli

Modul obsahuje aparát pomocí kterého lze zobrazovat v prezentační části webu informace o aktuálně přihlášeném uživateli. Tento aparát podporuje zobrazování v dynamických stránkách, tj. ve zprávách, ve stránkách zobrazovaných dynamicky a ve stránkách modulů. Pokud jsou stránky generované staticky (typicky úvodní stránka webu, stránky sekcí apod.), není zde jednoduchá možnost zobrazit informace o přihlášeném uživateli podporována.

Nejprve je třeba zaregistrovat extenzi modulu _user_inc.php (viz Umístění extenzí).

Pak je třeba do šablon resp. předloh stránek ve kterých se mají údaje zobrazovat umístit kód, pomocí kterého se tyto údaje zobrazují, typicky cca

<!--WTD_IF(USERLOGGEDIN,"<div>Jste přihlášen jako <strong><!--WTD_REGISTR(FIRSTNAME)--> <!--WTD_REGISTR(LASTNAME)--></strong>,
odhlásit se můžete <a href="/scripts/modules/registration/logout.php">zde</a>.</div>")-->

Extenze podporuje podmíněné vkládání HTML kódu v případech že uživatel je či není přihlášen, a vložení základních informací o uživateli (křestní jméno, příjmení apod.). Více viz Klíčová slova modulu.