Přihlašování na stránky (III) – posíláme heslo V předcházejícím díle seriálu o přihlašování na web stránky jsme dali uživatelům možnost změnit si své heslo. Tento pro uživatele vstřícný krok však sebou nese jeden velký problém a to sice zvýšenou možnost zapomenutí hesla a tím pádem i znepřístupnění web stránek pro uživatele do té doby než mu správce aplikace sdělí jeho heslo. V dnešním článku se dozvíte jak zajistit možnost zaslání hesla na email, který je uveden v databázi.

Předpokladem správné funkce je ovšem zajištění stavu, že kombinace emailové adresy a jména uvedených v databázi budou unikátní. To lze snadno zajistit při vkládání uživatelů do databáze, ale o tom až v některém z dalších dílů toho seriálu. Pro dnešní díl budeme předpokládat, že emaily a jména v databázi jsou skutečně unikátní.

Celá dnešní „přidaná hodnota“ bude opět umístěna v jediném souboru, který se bude jmenovat mailpsw.asp V souboru bude umístěn jednoduchý formulář, který se zobrazí při přístupu na mailpsw.asp bez předchozího vyplnění formuláře a script, který na základě vyplněné email adresy a jména odešle heslo, které těmto zadaným údajům odpovídá.

<!--#include file="connect.asp"-->
<%
if Request.Form("email")="" and Request.Form("jmeno")="" then
%>
   <FORM action="mailpsw.asp" method=POST id=form name=form>
   Jméno:<INPUT type="text" id=jmeno name=jmeno><br>
   E-mail:<INPUT type="text" id=email name=email><br>
   <INPUT type="submit" value="Submit" id=submit1 name=submit1>
   <INPUT type="reset" value="Reset" id=reset1 name=reset1>
   </FORM>
<%
else
   if isconnectdb() then
      sql="select jmeno,heslo,email from USERS where email='"&Request.Form("email")&"' and jmeno='"&Request.Form("jmeno")&"'"
      set rs=objconn.execute(sql)
      if not rs.eof and not rs.bof then
         ' posilame heslo
         Set myMail=server.CreateObject("CDONTS.NewMail")
         myMail.From= "clanek@interval.cz"
         myMail.To=rs("email")
         myMail.Subject="Mail z aplikace prihlaseni"
         myMail.Body="Vase heslo je: "& rs("heslo")
         mymail.Send
         set myMail=nothing
         Response.Write "Vaše heslo bylo posláno na adresu: "&rs("email")
      else
         Response.Write "Zadaná email adresa nebo jméno nejsou v databázi"
      end if
      rs.close
      set rs=nothing
   else
      Response.Write "Nepodařilo se spojit s databází"
   end if
end if
%>

Pokud není kombinace zadaného jména a adresy nalezena v databázi nebo se nelze s databází spojit je o tom uživatel informován.

Ve skriptu je použito souboru connect.asp, který zajišťuje spojení s databází a byl již několikrát popisován v předchozích článcích. Na základě vyplněné email adresy sestavíme SQL dotaz pomocí kterého se pokusíme v databázi najít odpovídající záznam. Pokud najdeme záznam, který odpovídá zadané email adrese odešleme na tuto adresu heslo. Podobněji je posílání emailu popsáno v článcích o posílání emailu pomocí ASP, které najdete v této rubrice Intervalu.

A ještě jeden tip na závěr dnešního článku. Pokud chcete mít formulář pro poslání hesla na jiné stránce můžete jej bez obav umístit kamkoliv. V tomto případě, ale doporučuji po zpracování provést přesun zpět na stránku ze které bylo volání provedeno.

Vše co jsem vám dneska předvedl si máte možnost stáhnout zde.

Příště vám ukáži jak udělat rozhraní pro správce pomocí kterého bude například možné mazat jednotlivé uživatele či blokovat jednotlivé účty. Další funkcí bude možnost rozeslání informací na emaily uvedené v databázi.