Imazh

Kontrollues i Fortësisë së Fjalëkalimeve me JQuery

Sa do të sigurta aplikacionet që krijojmë, mbetet problemi i ndërgjegjshmërisë së vizitorëve për të përdorur fjalëkalime komplekse. Në këtë guidë do ju tregoj një teknikë interesante për ti informuar vizitorët se sa të sigurtë janë fjalëkalimet e tyre.

Shkarko Kodin Shiko Demon

Siguria e aplikacioneve web është rritur vitet e fundit si pasojë e përmirësimit të teknologjisë dhe pëfitimit të një eksperience shumë vjeçare. Enkriptimi me SSL, kthimi i fjalëkalimit në hash kriptografik dhe mbrojtja e përgjithshme e aplikacionit nga sulmet standarte (edhe jo) janë vetëm disa nga masat e sigurisë. Megjithatë, sa do i sigurt aplikacioni, në lojë futet edhe përgjegjshmëria e vizitorëve për të vendosur fjalëkalime të forta, të cilat mund të varjojnë nga fjalë të thjeshta fjalori në 20 gërma kombinime abstrakte.

Qëllimi i kësaj guide të shkurtër (por praktike) është të ndërtojmë një mënyrë vizuale për ta informuar vizitorin rreth fortësisë së fjalëkalimit. Hera e parë që kam rastisur në një paraqitje të tillë ka qenë kur u regjistrova në Google Mail (paraqitur më poshtë) dhe mu duk zgjidhje shumë e mirë. Më pas teknika morri moment dhe u implementua edhe në shumë faqe të tjera. Unë do ju tregoj si të ndërtoni një matës fortësie të ngjashëm me Google Mail, por [besoj] më interesant dhe me më shume nivele fortësie.

gmail fjalekalimi

Fjalëkalimi në GMail

Para se të filloj, më lejoni t’ju shpjegoj logjikën e thjeshtë të matësit. Gjithçka bazohet në disa nivele fortësie të cilët rriten në bazë të kushteve të vendosura. Pasja e një gërme të madhe, një simboli, një numri dhe gjatësia më e madhe se 12 karaktere janë faktorët që rrisin nivelet e fortësisë.

Do ta nis guidën me kodin HTML që strukturon fushën e fjalëkalimit dhe bën gjithçka gati për tu ngjyrosur e pozicionuar me CSS.

<label for="fjalekalimi">Fjalekalimi</label>
<input type="text" name="fjalekalimi" id="fjalekalimi" />
<br /><br />Fortesia: <span id="teksti"></span>
<div id="fortesia">
     <div id="progresi"></div>
</div>

Kodi nuk ka asgjë të veçantë, por më duhet t’ju shpjegoj disa gjëra të thjeshta. <span id=”teksti”> është elementi i cili do të mbajë shkrimin e fortësisë (psh: I Fortë, I Dobët, etj). <div id=”fotesia”> është mbajtësi i progresit, ndërsa <div id=”progresi”> është elementi që do të tregojë progresin duke u zmadhuar dhe zvogëluar në gjerësi. Një gjë që duhet të theksoj është fakti se kam përdorur <input type=”text”> në vend të <input type=”password”>. E vetmja arsye është që fjalëkalimi të shihet në mënyrë që të eksperimentoni me nivelet e ndryshme të fortësisë, por në një projekt real duhet të përdorni <input type=”password”>.

Për ta bërë të bukur paraqitjen e elementëve do të shkruajmë disa rregulla të thjeshta në CSS.

label{
     display:block;
}

input#fjalekalimi{
     border:1px solid #aaa;
     width:200px;
     padding:5px;
}

span#teksti{
     color:#09c; /* Teksti i fortesise e ka ngjyren blu */
}

div#fortesia{
     width:210px;
     border:1px solid #ddd;
}

div#progresi{
     height:10px;
     background-color:#09c; /* Indikuesi i progresit e ka sfondin blu */
     width:0%; /* dhe eshte 0% i gjere per mos tu shfaqur */
}

/* Nje klase qe do te aktivizohet kur te ndodhe gabim */
div#progresi.problem{
     background-color:red;
}

/* Nje klase qe do te aktivizohet kur te ndodhe gabim */
span#teksti.problem-teksti{
     color:red;
}

Tashmë kemi punuar me paraqitjen dhe kemi bërë gjithçka gati për të kaluar në kodin JavaScript. Kodi (që vijon më poshtë) është i komentuar mirë, megjithatë më duhet t’ju tregoj logjikën e thjeshtë që fuqizon këtë kontrollues fortësie. Kam krijuar një funksion i cili është lidhur me eventin keyup() në mënyrë që të egzekutohet sa herë që në fjalëkalim shtohet një karakter. Gjëja e parë që kryhet është të kontrollohet nëse fjalëkalimi është nën 6 karaktere, ku matësi i fortësisë çaktivizohet duke u bërë i kuq dhe shfaqet një mesazh gabimi. Kur fjalëkalimi është mbi 6 karaktere, automatikisht fortësia fiton një pikë dhe vazhdohet me kontrollin e niveleve të tjera. Me Regular Expressions kontrollohet nëse fjalëkalimi përmban gërma të mëdha, numra apo simbole dhe i shtohet një pikë fortësisë për çdo kusht të plotësuar. Edhe nëse fjalëkalimi është më i gjatë se 12 karaktere është një pikë tjetër. Në fund, pikët mblidhen dhe në bazë të tyre shfaqet mesazhi dhe progresi. Shpresoj që shpjegimi teorik të ketë sens, por kuptohet që kodi do ju tregojë si gjithçka funksionin në praktikë.


$(document).ready(function(){
     /*
     Per te thjeshtesuar kodin, deklarojme variablat te cilat
     i drejtohen elementeve html. $() eshte menyra e shkurtuar
     e JQuery per document.getElementById().
     */
     var fjalekalimi = $('#fjalekalimi');
     var fortesia = $('#fortesia');
     var teksti = $('#teksti');
     var progresi = $('#progresi');

     var minimumi = 6; //Numri minimal i karaktereve per fjalekalimin
     var germa = 0; //Do aktivizohet kur numri i karaktereve te jete >12
     var germaMedha = 0; //Do aktivizohet kur te gjendet nje germe e madhe
     var numra = 0; //Do aktivizohet kur te gjendet nje numer
     var simbole = 0; //Do aktivizohet kur te gjendet nje simbol
     var totali = 0; //Do na sherbeje per te mbledhur totalin e 4 prej variablave me siper

     function shfaqFortesine(){
          /*
          Kontrollojme nese gjatesia e fjalekalimit eshte me e vogel se
          vlera e percaktuar ne variabel.
          */
          if(fjalekalimi.val().length < minimumi){
               /*
               Elementit 'progresi' i shtojme klasen 'problem' permes funksionit
               addClass() e cila e ben sfondin e kuq. Gjithashtu e bejme gjeresine
               e elementit 100% ne menyre qe te shfaqet i teri (default ne css eshte
               vendosur 0) me funksionin css().
               */
               progresi.addClass('problem');
               progresi.css('width', '100%')

               /*
               Ashtu si tek progresi, edhe tekstit i shtojme klasen 'problem-teksti' ne
               menyre qe ngjyra e tekstit te behet e kuqe. Me funksionin html() - shkurtimi
               i JQuery per innerHTML() - shfaqim mesazhin e gabimit.
               */
               teksti.addClass('problem-teksti');
               teksti.html('Me pak se 6 karaktere');
               /*
          Kodi me poshte do te egzekutohet kur numri i karaktereve te jete
          me i madh se numri i vendosur ne variabel.
          */
          } else{
               /*
               Ja heqim klasat e gabimit elementeve ne menyre qe te kthehen
               ne ngjyrat origjinale (blu, te vendosura me CSS).
               */
               progresi.removeClass('problem');
               teksti.removeClass('problem-teksti');

               /*
               Kater rreshtat e meposhtem jane matesit e fortesise. Me funksionin match() kerkojme
               nese Regular Expression i vendosur perkon me tekstin. Nese po, atehere variabla e duhur
               behet 1, perndryshe kthehet ne 0. Rreshti i fundit thjeshte kontrollon nese gjatesia e
               tekstit eshte me e madhe se 12, gje qe i shton nje tjeter pike fortesise.
               [A-Z] kontrollon nese teksti permban germa te medha.
               [0-9] kontrollon nese teksti permban numra.
               (.*[!,@,#,$,%,^,&,*,?,_,~]) kontrollon nese teksti permban simbole.
               */
               if(fjalekalimi.val().match(/[A-Z]/g)){ germaMedha = 1; } else{ germaMedha = 0; }
               if(fjalekalimi.val().match(/[0-9]/g)){ numra = 1; } else{ numra = 0; }
               if(fjalekalimi.val().match(/(.*[!,@,#,$,%,^,&,*,?,_,~])/)){ simbole = 1; } else{ simbole = 0; }
               if(fjalekalimi.val().length > 12){ germa = 1; } else{ germa = 0; }

               /*
               Mbledhim shumen e te gjitha variablave te kontrollit dhe e kalojme
               ne variablen 'totali'. Vlera e variablave te kontrollit eshte ose 1,
               ose 0, prandaj shuma minimale eshte 0 (fortesi minimale), ndersa shuma
               maksimale eshte 4 (fortesi maksimale).
               */
               totali = germaMedha + numra + simbole + germa;
               /*
               Ketu kam bere nje llogaritje te vogel per te shfaqur ne menyre dinamike
               progresin e fortesise duke levizur gjeresine e elementit 'progresi'.
               Duke filluar nga 0 deri ne 4 kemi 5 nivele fortesie, ndersa progresi eshte 100%.
               Pra 100%/5 nivele = 20% per nivel. Per nivelin 0 mendova qe progresi te shkoje
               ne 25% dhe jo 0%, ne menyre qe te behet diferenca midis fjalekalimit qe nuk i
               ploteson numrin minimal te karaktereve dhe atij qe i ploteson. Permes llogaritjes
               se meposhtme: totali*20+20 +'%' kemi keto raste te mundshme:
               totali = 0 => 0*20+20 = 20% (fortesi minimale)
               totali = 1 => 1*20+20 = 40%
               totali = 2 => 2*20+20 = 60%
               totali = 3 => 3*20+20 = 80%
               totali = 4 => 4*20+20 = 100% (fortesi maksimale)
               */
               progresi.css('width', totali * 20 + 20 + '%');

               /*
               Ne baze te vleres se variables 'totali' percaktohet edhe fortesia
               e fjalekalimit (min:0, maks:4). Shfaqim mesazhet e duhura sipas
               nivelit te caktuar, nga 'I Dobet' deri ne 'Ekstrem!'.
               */
               if(totali == 0){ teksti.html('I Dobet'); }
               else if(totali == 1){ teksti.html('Mesatar'); }
               else if(totali == 2){ teksti.html('I Forte'); }
               else if(totali == 3){ teksti.html('Super i Forte'); }
               else if(totali == 4){ teksti.html('Ekstrem!'); }
          }
     }

     /*
     Lidhim eventin keyup() me funksionin shfaqFortesine(). Ne momentin qe
     nje taste do te shtypet, funksioni do therritet per te shfaqur rezultatin
     ne kohe reale.
     */
     fjalekalimi.keyup(shfaqFortesine);
});

Kodi JavaScript mund të jetë pak “friksues” për fillestarët (komentet e zgjasin edhe më tepër), por ju siguroj që nuk ka asnjë shkencë. Thjeshtë kam krijuar një algoritëm i cili skanon tekstin dhe përcakton nivelin e fortësisë në bazë të përmbajtjes së tij dhe rezultatin e shfaq duke manipuluar disa elementë. Kodi mund të përdoret copy-paste për projekte të ndryshme, por do ju këshilloja të eksperimentoni disi e ndoshta të krijoni një algoritëm tuajin apo ta modifikoni tërësisht mënyrën e shfaqjes së fortësisë. JQuery është një librari shumë e fuqishme dhe e thjeshtë në të njëjtën kohë, me të cilën mund të bëni çfarëdo ju tregon fantazia.

Mësim të mbarë.

Jepni Mendimin Tuaj

* Emri, Emaili edhe Komenti janë të detyrueshme

Nëse doni të qëndroni gjithmonë të informuar rreth lajmeve që postohen në faqen tonë, pa pasur nevojë që të hyni përdit këtu, ne ju këshillojmë të abonoheni me E-mail.
Ne e urrejmë SPAM-in kështu që mund të regjistroheni pa problem. Ne ju premtojmë që do të merrni E-mail vetëm atëher kur të ketë postime të reja.

RSS Feeds E-Mail:

Shkruaj në Feniksi!

Ne paguajmë nëse ju shkruani një tutorial dhe publikohet tek faqja jonë.

Mëso më Shumë

MG ARTs WpAlb.com ShqipAD Webmaster.AL Host.AL Reklamo

Përkufizime Teknike

Pixel: Monitori i një kompjuteri dhe fotot dixhitale përbehen nga miliona pika pse Pixel. Numri i pikave jepet zakonisht më një numër çift si 1280 x 1024 (horizontal x vertikal). Sa më i madh të jetë ky numër Pixelash aq më shumë detaje shfaqen në monitor apo fotografi.

Quize

Ju jeni këtu: Faqja Kryesore » Kontrollues i Fortësisë së Fjalëkalimeve me JQuery FillimShko në fillim

Info Info mbi Feniksi

Feniksi.Com është një faqe e cila përmban tutoriale të ndryshme mbi webdesign, programimi, grafik, këshilla mbi ndërtimin e faqeve e shumë gjëra të tjera. Për ne nuk është e thjeshtë ta shpjegojmë me disa fjalë, kështu që jua lejmë juve këtë gjë. Nëse keni ndonjë sugjerim për faqen apo ndonjë këshillë përmirësimi, ju lutem na kontaktoni.