UWAGA!!! Je┐eli nie masz pojΩcia o Java Script'cie to najpierw przeczytaj artyku│ "Java Script dla pocz▒tkuj▒cych", gdy┐ jest to jego kontynuacja i wykorzystana tu bΩdzie wiΩkszo╢µ rzeczy opisanych w tamtym artykule.

My╢la│e╢ kiedy╢ o ograniczeniu dostΩpu do niekt≤rych stron w twojej witrynie WWW? Tak? A czy domy╢lasz siΩ, ┐e nie jest to takie trudne? Zaczniemy po kolei...

Po pierwsze, musimy napisaµ funkcjΩ, kt≤ra sprawdzi poprawno╢µ has│a i loginu podanego przez u┐ytkownika.

<script languge="JavaScript">
function password(login,haslo){
if (login=="prawidlowylogin"){
if (haslo=="prawidlowehaslo"){
location="doceldokument.htm"
}
}
}
</script>

I mamy ju┐ najwa┐niejsz▒ czΩ╢µ naszego skryptu. Obja╢niΩ teraz wszystko linijka po linijce. Najpierw deklarujemy przegl▒darce, ┐e rozpoczynamy skrypt. Potem deklarujemy funkcjΩ password ze zmiennymi login i haslo, kt≤re wprowadzi u┐ytkownik. NastΩpnie za pomoc▒ instrukcji warunkowej sprawdzamy, czy login jest tym samym co prawidlowylogin i czy haslo to to samo co prawidlowehaslo (inaczej m≤wi▒c, czy has│o i  login s▒ poprawne). Je┐eli wszystko jest poprawnie to wykonywana jest instrukcja powoduj▒ca przej╢cie do ukrytego dokumentu. Zastosowali╢my tu zmienn▒ location kt≤ra przechowuje adres bie┐▒cego dokumentu, tak wiΩc zmieniaj▒c j▒, zmieniamy bie┐▒cy dokument i przegl▒darka │aduje podan▒ stronΩ.
Teraz musimy umo┐liwiµ odwiedzaj▒cemu wpisanie has│a i loginu. Wykorzystamy do tego celu zwyk│y formularz.

<form name="podajhaslo">
Login: <input type=text name=login value=""><BR>
Has│o: <input type=password name=haslo value=""><BR>
<input type=button value="Wejd╝">
<input type=reset value=Wyczy╢µ>
</form>

W efekcie:
Login:
Has│o:

Wszystko powinno byµ jasne. Zwyk│y formularz w HTML'u z dwoma polami (Login i has│o) i dwoma przyciskami (wejd╝ i wyczy╢µ). »eby jednak wykorzystaµ go do naszych cel≤w, musimy go trochΩ przerobiµ. Chodzi o to, ┐eby formularz wywo│ywa│ nasz▒ funkcjΩ razem z danymi wprowadzonymi przez u┐ytkownika. Zrobimy to tak: w parametrach przycisku nazwanego "Wejd╝" dodamy parametr onClick="instrukcje". Parametr ten obs│uguje zdarzenie. Je┐eli kto╢ nadusi przycisk (zajdzie zdarzenie onClick), to zostan▒ wykonane instrukcje JavaScriptu umieszczone po znaku r≤wno╢ci w cudzys│owu. W naszym przypadku instrukcj▒ bΩdzie wywo│anie naszej funkcji: onClick="password()". W okr▒g│ych nawiasach musimy umie╢ciµ warto╢ci loginu i has│a (w takiej kolejno╢ci, gdy┐ w tej kolejno╢ci mamy zdefiniowane w funkcji). »eby sprawdziµ co wpisa│ u┐ytkownik, musimy odwo│aµ siΩ do objekt≤w. »eby sprawdziµ, co u┐ytkownik wpisa│ w polu login musimy najpierw odwo│aµ siΩ do formularza u┐ywaj▒c jego nazwy, czyli podajhaslo, potem do pola loginu (ca│y czas wykorzystujemy nazwy zdefiniowane parametrem name), czyli login, a nastΩpnie do jego warto╢ci, czyli tego co jest w polu do wpisywania: value. Wszystko │▒czymy za pomoc▒ kropek i wychodzi: podajhaslo.login.value Tam w│a╢nie przechowywane jest to, co odwiedzaj▒cy wprowadzi│ w polu login! Parametr onClick wygl▒da teraz tak: onClick="password(podajhaslo.login.value)". To samo robimy z polem haslo, oddzielamy je przecinkami i nasz formularz w ca│o╢ci wygl▒da nastΩpuj▒co:

<form name="podajhaslo">
Login: <input type=text name=login value=""><BR>
Has│o: <input type=password name=haslo value=""><BR>
<input type=button value="Wejd╝" onClick="password(podajhaslo.login.value,podajhaslo.haslo.value)">
<input type=reset value=Wyczy╢µ>
</form>

I skrypt jest sko±czony. Nale┐y pamiΩtaµ, ┐e pierwszy skrypt (definicja funkcji) powinien znajdowaµ siΩ w sekcji <HEAD>, a drugi (formularz) powinien znajdowaµ siΩ w sekcji <BODY>. Je┐eli chcesz wykorzystaµ ten skrypt, to w definicji funkcji musisz pozmieniaµ pola: "prawidlowylogin", "prawidlowehaslo", "doceldokument.htm", aby dostosowaµ je do w│asnych potrzeb (teraz s▒ tam warto╢ci przyk│adowe).

UWAGA !!! I jeszcze jedna bardzo wa┐na rzecz: SKRYPT NIE JEST BEZPIECZNY. Dzia│a tylko na tych kt≤rzy nie maj▒ wcale pojΩcia o HTML'u! Ka┐dy inny internauta sprawdzi ╝r≤d│o strony, a tam jest wszystko co potrzebuje, ┐eby wej╢µ na utajnion▒ stronΩ! Po za tym has│o i login mo┐e byµ tylko jedno, ale da siΩ temu w pewien spos≤b zaradziµ.

Je┐eli chcesz, aby skrypt by│ bezpieczniejszy, trzeba przerobiµ definicjΩ funkcji password. Trzeba j▒ tak przerobiµ, aby nie zawiera│a takich danych jak: login, has│o i adres strony docelowej. Jak to zrobiµ? Trzeba zastosowaµ w pewnym stopniu fortel. Strona docelowa=login+has│o+'.htm'. W ten spos≤b, je┐eli chcesz, aby login, by│ np. ufo, a has│o np. mars, to plik docelowy bΩdzie mia│ postaµ: ufo_mars.htm
A oto funkcja po modyfikacji:

<script languge="JavaScript">
    <!--
    function password(login,haslo){
        password=""
        if (password!=null){
            location=login+'_'+haslo+'.htm'
        }
    }
    -->
</script>

Zmodyfikowana funkcja dzia│a ca│kiem inaczej. Je┐eli u┐ytkownik wprowadzi│ dane, to nastΩpuje skok do strony nazwanej: 
login_haslo.htm
Je┐eli u┐ytkownik ╝le co╢ wprowadzi, to zostanie wy╢wietlona strona, tak jakby adres zosta│ ╝le wprowadzony (bo te┐ tak w takiej sytuacji jest). I to jest spory problem w skrypcie, gdy┐ powinien pojawiµ siΩ komunikat o z│ym wpisaniu has│a lub loginu. Je┐eli wiesz jak w temu zaradziµ, to napisz do mnie. Z g≤ry dziΩkujΩ za informacje. Teraz zajmiemy siΩ tym jak spersonalizowaµ ten skrypt:

Je┐eli strony docelowe znajduj▒ siΩ w jakim╢ folderze to przer≤b to w nastΩpuj▒cy spos≤b:
location='folder/'+login+'_'+haslo+'.htm'
Je┐eli strony s▒ zako±czone na .html to to tak┐e powiniene╢ zmieniµ.

A oto jak mo┐e wygl▒daµ strona ze skryptem:

<HTML>
<HEAD>
<script languge="JavaScript">
    <!--
    function password(login,haslo){
        password=""
        if (password!=null){
            location.href=login+'_'+haslo+'.htm'
        }
    }
    -->
</script>
</HEAD>
<BODY>
<form name="podajhaslo">
Login: <input type=text name=login value=""><BR>
Has│o: <input type=password name=haslo value=""><BR>
<input type=button value="Wejd╝" onClick="password(podajhaslo.login.value,podajhaslo.haslo.value)">
<input type=reset value=Wyczy╢µ>
</form>
</BODY>
</HTML>

Ten skrypt jest ju┐ o wiele bezpieczniejszy od poprzedniego. W ╝r≤dle nie ma ┐adnych informacji o loginie, ha╢le, ani o adresie dokumentu docelowego. Teraz mo┐e korzystaµ z tego wiele os≤b naraz, wystarczy, ┐e porobisz kilka dokument≤w HTML (docelowych) i nadasz im odpowiednie nazwy.

I to ju┐ wszystko. My╢lΩ, ┐e uda│o mi siΩ wyja╢niµ wam, jak zastosowaµ ten skrypt i co wiΩcej: jak on dzia│a. S▒dzΩ, ┐e m≤j przyd│ugi artyku│ na co╢ siΩ przyda│. Wszelkie komentarze, uwagi i pytania proszΩ kierowaµ tu lub tu. Nikt nie zostanie bez odpowiedzi!

Maverick
maverick24@wp.pl / maverick24@poland.com