HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Internetes naptár készítése Delphi-vel


Naptár 8. rész

Példaprogram letöltése

16275 bájt

Cikksorozatunk befejező részében megvalósítjuk a jelszó kezelését, így a naptárba új bejegyzést felvenni, meglévőt törölni, illetve a nem publikus bejegyzéseket megtekinteni csak a naptár tulajdonosának lesz joga.
A mellékelt példa kipróbálása előtt az alábbi teendők szükségesek:
  • A sorozat első részében mellékelt adatbázisok alkönyvtárára létre kell hozni egy BDE alias-t, ASWEBCALENDAR névvel.
  • A Main.pas-ban található HTMDIR konstansnál adja meg azt az elérési útvonalat, ahová a mellékelt példa HTM alkönyvtárát helyezte.
  • Ezek után fordítsa le a programot (Project - Build).
  • A létrejött EXE-t másolja át web szerverének azon könyvtárába, ahonnan van joga futtatni internetes alkalmazásokat (Pl.: C:\InetPub\Scripts\)
  • Indítson el egy böngészőt és írja be a következő címet: http://szervernev/scripts/webcalendar08.exe, persze a szervernev mindenkinél más és más lehet.


A jelszó kezelést nagy mértékben leegyszerűsítjük: egyszerűen beépítünk a programba egy sztringet, mely a jelszó lesz. Ha a felhasználó ezt adja meg, akkor elfogadjuk a bejelentkezést, ha nem, akkor elutasítjuk. Felhasználói névre és több jelszó kezelésére a feladatnál fogva nincs szükség, mivel a naptárnak csak egy tulajdonosa lehet, aki felvehet új bejegyzést, törölhet. Mindenki más csak megtekintheti a publikus bejegyzéseket.

A bejelentkezés után viszont minden egyes link esetében jeleznünk kell, hogy a felhasználó már azonosította magát. Erre azért van szükség, mert különben a programunk nem tudná, hogy történt-e már bejegyzés vagy sem.

Ezt ismét egy egyszerűsítéssel oldjuk meg: ha egy linkben szerepel a data paraméter és ennek értéke pl8, akkor úgy vesszük, hogy a felhasználó bejelentkezett. Mind a data, mind a pl8 egy véletlenszerűen választott elnevezés, használhatnánk bármit.

Ha tehát http://szervernev/scripts/webcalendar08.exe kerül beírásra egy böngészőbe, akkor a felhasználó nincs bejelentkezve. Ha viszont http://szervernev/scripts/webcalendar08.exe/data=pl8, akkor a felhasználó bejelentkezett.

Nyilvánvaló, hogy fenti sort a jelszó ismerete nélkül is begépelheti bárki és így teljes hozzáférése lesz a naptárhoz. Vegyük figyelembe viszont, hogy a data=pl8 kódot csak a programozó ismeri, aki készíti az alkalmazást. A http://szervernev/scripts/webcalendar08.exe/data=pl8 sort csak az láthatja, aki a naptár tulajdonosa, vagyis aki a jelszóval érvényesen bejelentkezett. Ebből következik viszont, hogy jogosulatlan felhasználó nem férhet hozzá a naptárhoz a jelszó vagy a data=pl8 kód ismerete nélkül, tehát minimális ráfordítással védhetővé tettük a naptárat.

Nézzük most a megvalósítást.

Ki kell egészítenünk a web lapot egy kis bejelentkezési ablakkal, ahová a jelszó beírható. További teendő, hogy elrejtsük a naptárba való új bejegyzés web Form-ját mindaddig, amíg nem történt meg a bejelentkezés. Így egyszerűen meggátoljuk, hogy jogosultság nélkül új bejegyzés kerüljön a naptárba.

A login.htm tartalmazza a bejelentkezéshez szükséges web Form HTML kódját. Ha a bejelentkezés megtörtént, akkor viszont erre az ablakra már nincs szükségünk, helyette viszont illendő kijelezni, hogy bejelentkezés sikeres. Ennek kódja a logged.htm-ben kapott helyet.

A main.htm-be elhelyeztünk egy <#login> címkét. Attól függően, hogy bejelentkezett-e a felhasználó vagy sem, ezt a címkét a login.htm tartalmára, illetve a logged.htm tartalmára cseréljük le.

Mivel el kell rejtenünk az új bejegyzés web Form-ját is, így ennek kódja a main.htm-ből átkerült egy újonnan létrehozott append.htm-be. A main.htm-be pedig egy <#append> címke került ennek a helyére. Ezt a címkét szintén a bejelentkezéstől függően vagy kicseréljük az append.htm tartalmára vagy egyszerűen nem cseréljük ki semmire és így bejelentkezés nélkül meg sem jelenik az új bejegyzés ablaka.

A login.htm-ben lévő web Form-hoz a login nevű akciót rendeltük, így ezt kell majdan a programunkban is létrehozni. Amikor tehát a felhasználó beírja a jelszót és azt elküldi a szervernek, akkor fut le a login akció OnAction eseménye.

Itt kell ellenőriznünk, hogy a beírt jelszó megfelel-e. A beírt jelszót a Request.QueryFields. Values['pass'] property-ből olvashatjuk ki. A jelszót mi a dso sztringre választottuk meg, de ez persze tetszőleges lehet. Ha tehát a mellékelt példa bejelentkezési ablakába jelszónak a dso sztringet adjuk meg, akkor a bejelentkezés sikeres lesz. Ha más sztring kerül beírásra, akkor egy rövid hibaüzenetet küldünk vissza a felhasználónak.

Ha a jelszó helyes, akkor visszaugrunk a kezdő weblapra a már ismertetett Response.SendRedirect eljárással, de most paraméterként megadjuk a data=pl8 kódot is.
procedure TWebModule1.WebModule1WebActionItem4Action
     (Sender: TObject; Request: TWebRequest; 
     Response: TWebResponse; var Handled: Boolean);
begin
  with Request.QueryFields do begin
    FLogged:=Values['pass']='dso';
  end;
  if FLogged then begin
    Response.SendRedirect(Request.ScriptName+'?data=pl8');
  end else begin
    Response.Content:='Hibás a jelszó!';
  end;
end;
A programunkat még módosítanunk kell minden olyan helyen, ahol link előállítása történik. Szükséges ezt azért megtennünk, hogy ha egy kérés kiszolgálásakor már adott a data paramétert a pl8 értékkel, akkor ezt minden egyes linkbe el kell hogy helyezzük. Ha ezt nem tennénk, akkor megszűnne a bejelentkezési státusz.

Ennek érdekében létrehozunk egy globális logikai változót FLogged néven, melynek minden akció elején értéket adunk a következő módon:
…
FLogged:=Request.QueryFields.Values['data']='pl8';
…
Vagyis az FLogged igaz lesz, ha paraméterként megkaptuk a data=pl8-at. A későbbiek folyamán az FLogged vizsgálatával már tetszőlegesen elágaztathatjuk a programunkat az adott helyzetnek megfelelően.

Link található még a web lapon is a dátumra való ugrásnál. Így itt módosítjuk a main.htm kódját elhelyezve benne egy rejtett mezőt ami data névre hallgat. Értékét programból kapja a <#querylog> címke cseréjével. Ha bejelentkezett a felhasználó, akkor csak annyi a teendőnk, hogy a pl8 értékre cseréljük ki a címkét.
…
    if TagString='querylog' then begin
      if FLogged then begin
         ReplaceText:='pl8';
      end;
    end;
…

Az Ugrás a mai napra link esetében a <#nowdate> címke kerül cserélésre. Itt most csak ki kell egészítenünk a forráskódban már meglévő kódot, hogy ha a bejelentkezés megtörténik, akkor a data=pl8 paraméter is a linkhez kerüljön.
…
   if TagString='nowdate' then begin
     DecodeDate(Now, year, month, day);
     ReplaceText:='year='+IntToStr(year)+'&month='
        +IntToStr(month)+'&day='+IntToStr(day);
     if FLogged then begin
        ReplaceText:=ReplaceText+'&data=pl8';
     end;
   end else begin
…


Cikksorozat



Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2000 évkönyv 529. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |