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

Z WebToDate
Skočit na navigaciSkočit na vyhledávání
Bajkvl (diskuse | příspěvky)
Založena nová stránka: Category:WebToDate 4.1 Registrace a personalizace Category:Registrace a personalizace == Možné způsoby aktivace a deaktivace registračních záznamů == Aby moh…
 
Bajkvl (diskuse | příspěvky)
Bez shrnutí editace
Řádek 38: Řádek 38:




[[Image:image029.jpg|center]]
[[Image:registraceapersonalizace-tipyanavody-img029.png|center]]




Řádek 91: Řádek 91:
Formulář pro novou registraci a změnu registrace musí být v HTML kódu změněn na
Formulář pro novou registraci a změnu registrace musí být v HTML kódu změněn na


<nowiki><form action="/scripts/modules/registration/registration.php" method="post"  enctype="multipart/form-data"></nowiki>
<code>
<nowiki><form action="/scripts/modules/registration/registration.php" method="post"  enctype="multipart/form-data"></nowiki>
</code>


čili musí být uvedeno ''enctype="multipart/form-data''".''
čili musí být uvedeno ''enctype="multipart/form-data''".''
Řádek 99: Řádek 101:
Část registračního formuláře pro novou registraci či změnu registrace může vypadat např. následovně:
Část registračního formuláře pro novou registraci či změnu registrace může vypadat např. následovně:


<nowiki><tr><td>Avatar</td></nowiki>
<code>
 
<nowiki><tr><td>Avatar</td></nowiki>
<nowiki><td></nowiki>
<nowiki><td></nowiki>
 
<nowiki><!--WTD_IF(NOAVATAR,"<input type="file" name="avatarfile">")--></nowiki>
<nowiki><!--WTD_IF(NOAVATAR,"<input type="file" name="avatarfile">")--></nowiki>
<nowiki><!--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>")--></nowiki>
 
  <nowiki> </td></nowiki>
<nowiki><!--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>")--></nowiki>
<nowiki></tr></nowiki>
 
</code>
  <nowiki></td></nowiki>
 
<nowiki></tr></nowiki>


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 ''<nowiki><input type="file" name="avatarfile"></nowiki>'' slouží pro upload avataru, ostatní klíčová slova slouží pro zobrazení avataru resp. pro zobrazení odkazu na smazání avataru.
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 ''<nowiki><input type="file" name="avatarfile"></nowiki>'' slouží pro upload avataru, ostatní klíčová slova slouží pro zobrazení avataru resp. pro zobrazení odkazu na smazání avataru.
Řádek 115: Řádek 114:
Pokud je využívána možnost zobrazit stránku pro potvrzení registračních údajů, lze v&nbsp;ní použít kód zhruba ve tvaru
Pokud je využívána možnost zobrazit stránku pro potvrzení registračních údajů, lze v&nbsp;ní použít kód zhruba ve tvaru


<nowiki><tr><td>Avatar</td></nowiki>
<code>
 
<nowiki><tr><td>Avatar</td></nowiki>
<nowiki><td></nowiki>
<nowiki><td></nowiki>
 
<nowiki><!--WTD_IF(NOAVATAR,"Není vložen avatar")--></nowiki>
<nowiki><!--WTD_IF(NOAVATAR,"Není vložen avatar")--></nowiki>
<nowiki><!--WTD_IF(HASAVATAR,"<img src="<!--WTD_REGISTR(AVATARFILE)-->" alt="Váš avatar" />")--></nowiki>
 
  <nowiki> </td></nowiki>
<nowiki><!--WTD_IF(HASAVATAR,"<img src="<!--WTD_REGISTR(AVATARFILE)-->" alt="Váš avatar" />")--></nowiki>
<nowiki></tr></nowiki>
 
</code>
  <nowiki></td></nowiki>
 
<nowiki></tr></nowiki>


Pokud tedy uživatel nevložil avatar, zobrazí se pouze informační text, v&nbsp;opačném případě je v&nbsp;potvrzovací stránce obrázek s&nbsp;avatarem.
Pokud tedy uživatel nevložil avatar, zobrazí se pouze informační text, v&nbsp;opačném případě je v&nbsp;potvrzovací stránce obrázek s&nbsp;avatarem.


Avatary lze vkládat a měnit jednotlivým uživatelům i z&nbsp;administračního rozhraní, jak je popsáno v&nbsp;kapitole Data.
Avatary lze vkládat a měnit jednotlivým uživatelům i z&nbsp;administračního rozhraní, jak je popsáno v&nbsp;kapitole [ Data].

Verze z 11. 8. 2009, 14:18

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].