home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2001 November / MICD2001_11_NR1.iso / Www / WebArea / index.php@id=8 < prev    next >
Text File  |  2001-09-26  |  35KB  |  891 lines

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4//PL">
  2. <html>
  3. <head>
  4. <title>WEB-AREA.org - serwis webmaster≤w</title>
  5. <link href="style.css" rel="stylesheet" type="text/css">
  6. <LINK REL="SHORTCUT ICON" HREF="favicon.ico"> 
  7. <meta http-equiv="Creation-date" content="28.08.2001">
  8. <meta http-equiv="Reply-to" content="web-area@web-area.org">
  9. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2">
  10. <meta name="author" content="Jakub & Jan Filipowscy">
  11. <meta name="description" content="Serwis webmasterow. Znajdziesz tu kilka kursow popularnych internetowych jezykow programowania takich jak: HTML, CSS, WML, SGML, XML, PHP, Perl i Java. Zamiescilismy tu rowniez wiele skryptow JavaScript, PHP i CGI. Przeczytac mozna kilka artykulow i sciagnac kilka szablonow. Dla poczatkujacych jest dzial BeginnerZone. ">
  12. <meta http-equiv="keywords" content="WEB-AREA, web-area, web area, web, area, WEB-AREA.org, web-area.org, webara.org,strefa webmastera, strefa, webmastera, webmaster, WEBMASTER, Webmaster, tworzenie stron www, www, strona www, internet, world wide web, design, designerswo, designer, programowanie, jΩzyki, jΩzyk programowania, php, cgi, html, java, javascript, sgml, wml, PHP, CGI, HTML, Java, JavaScript, SGML, WML, wap, standarty, skrypty php, skrypty cgi, applety java, aplety, aplety java, aplety javy, applety javy, javascripty, JavaScripty, skrypty javy, publikowanie witryny, witryna, tworzenie witryn, tworzenie sklep≤w internetowych, edytory html, tekstowe edytory html, projekt syf, szablony, Szablony, free, darmowe, zadarmo, subskrypcja, lista mailingowa, mailing list, lista subskrypcyjna, bannery, formularze, liczniki, ksiΩgi go╢ci, linki, fora, pliki i operacje na nich, statystyki, wyszukiwarki, rankingi, darmowe skrypty, Jakub Filipowski, Jan Filipowski, katalog, Katalog stron zwi▒zanych z tematyk▒ webmasterstwa, webmasterswo, magazyn www, style, CSS, XML, ASP, jΩzyki skryptowe, generatory, anarchizm">
  13. </head>
  14. <body>
  15.  
  16.  
  17. <div align="left">
  18. <table border="0" cellpadding="0" cellspacing="0" width="770">
  19. <tr>
  20. <td width="770" valign="top" colspan="3">
  21.  
  22.     <table border="0" cellpadding="0" cellspacing="0" width="770">
  23.     <tr>
  24.     <td width="166" valign="top"><a href="index.php"><img src="img/logo.gif" border="0" width="166" height="70" alt="WEB-AREA.org - serwis webmaster≤w"></a></td>
  25.     <td width="604" height="70" background="img/gora.gif" align="right"><iframe src="banner.php" MARGINWIDTH="0" MARGINHEIGHT="0" HSPACE="0" VSPACE="0" FRAMEBORDER="0" SCROLLING="NO" WIDTH="468" HEIGHT="60">
  26. </iframe></td>
  27.     </tr></table>
  28.  
  29. </td>
  30. </tr><tr>
  31. <td width="770" valign="top" colspan="3">
  32.     <table border="0" cellpadding="1" cellspacing="0" width="770">
  33.         <tr><form method="post" action="szukaj.php">
  34.         <td width="260">    <input type="text" name="zapytanie" size="15"> <input type="submit" value="SZUKAJ"> <span class="m"><a href="index.php@url=redakcja_2Fszukaj">Jak szukaµ?</a></span></td></form>
  35.         <td width="510">
  36.         
  37.         <p align="center">
  38.         <a href="index.php@id=206" class="gora">Konkurs</a>   
  39.         <a href="subskrypcja/nowa.php" class="gora">Za│≤┐ subskrypcjΩ</a>    
  40.         <a href="index.php@id=128" class="gora">Katalog</a>    
  41.         <a href="forum.php" class="gora">Forum</a>    
  42.         <a href="index.php@id=15" class="gora">BeginnerZone</a>
  43.         
  44.         </td>
  45.     </tr></table>
  46. </td>
  47. </tr>
  48. <tr>
  49. <td width="142" valign="top">
  50.     
  51.     <br>
  52.     <table border="0" cellpadding="0" cellspacing="0" width="142">
  53.     <tr>
  54.     <td width="142" valign="top"><img src="img/menu.gif" border="0" width="142" height="13" alt="MENU"></td>
  55.     </tr>
  56.     <tr>
  57.     <td width="142" valign="top" background="img/okno1.gif">
  58.     <img src="img/s.gif" width="9" height="8"><b class="menu1">KURSY</b><br>
  59.       - <a href="index.php@id=50" class="menu">HTML</a><br>
  60.       - <a href="index.php@id=40" class="menu">CSS</a><br>
  61.       - <a href="index.php@id=62" class="menu">Java</a><br>
  62.       - <a href="index.php@id=145" class="menu">PHP</a><br>
  63.       - <a href="index.php@id=39" class="menu">CGI</a><br>
  64.       - <a href="index.php@id=5" class="menu">ASP</a><br>
  65.       - <a href="index.php@id=182" class="menu">WML</a><br>
  66.       - <a href="index.php@id=190" class="menu">XML</a><br>
  67.       - <a href="index.php@id=159" class="menu">SGML</a><br>
  68.  
  69.     <img src="img/s.gif" width="9" height="8"><b class="menu1">SKRYPTY</b><br>
  70.       - <a href="index.php@id=78" class="menu">JavaScript</a><br>
  71.       - <a href="index.php@id=135" class="menu">PHP</a><br>
  72.       - <a href="index.php@id=30" class="menu">CGI</a><br>
  73.  
  74.     <img src="img/s.gif" width="9" height="8"><b class="menu1">INNE</b><br>
  75.       - <a href="index.php@id=59" class="menu">Szablony</a><br>
  76.       - <a href="forum.php" class="menu">Forum</a><br>
  77.       - <a href="index.php@id=61" class="menu">Webmasterska lista</a><br>
  78.       - <a href="index.php@id=128" class="menu">Katalog</a><br>
  79.       - <a href="index.php@id=15" class="menu">BeginnerZone</a><br>
  80.       - <a href="index.php@id=206" class="menu">Konkurs</a><br>
  81.     
  82.     <img src="img/s.gif" width="9" height="8"><b class="menu1">SUBSKRYPCJA</b><br>
  83.       - <a href="subskrypcja/nowa.php" class="menu">Za│≤┐</a><br>
  84.       - <a href="subskrypcja/admin.php" class="menu">Administracja</a><br>
  85.  
  86.     <img src="img/s.gif" width="9" height="8"><b class="menu1">REDAKCJA</b><br>
  87.       - <a href="index.php@id=156" class="menu">Sk│ad</a><br>
  88.       - <a href="index.php@id=157" class="menu">Wsp≤│praca</a><br>
  89.       - <a href="index.php@id=158" class="menu">Reklama</a></td>
  90.     </tr>
  91.     <tr>
  92.     <td width="142" valign="top"><img src="img/okno2.gif" border="0" width="142" height="10"></td>
  93.     </tr></table>
  94.  
  95. </td>
  96. <td width="486" valign="top"><br>
  97.     <div align="center">
  98.     <table border="0" cellpadding="0" cellspacing="0" width="460">
  99.     <tr>
  100.     <td width="460" valign="top"><table border="0" cellpadding="0" cellspacing="0" width="460">
  101.         <tr>
  102.         <td width="460" valign="top"><img src="img/zobacz.gif" border="0" width="460" height="13" alt="ZOBACZ JESZCZE"></td>
  103.         </tr>
  104.         <tr>
  105.         <td width="460" valign="top" background="img/okno11.gif"><div align="center">
  106.                 <table border="0" cellpadding="0" cellspacing="0" width="450"><tr><td width="450"><a class="menu" href="index.php@id=6">Praca w ASP</a>
  107.  <a class="menu" href="index.php@id=7">Warunki i pΩtle</a>
  108.  <a class="menu" href="index.php@id=9">Obiekt Sessions i Cookies</a>
  109.  <a class="menu" href="index.php@id=10">Wysy│anie i odbieranie poczty e-mail</a>
  110.  <a class="menu" href="index.php@id=11">Bazy danych</a>
  111.  <a class="menu" href="index.php@id=12">Pliki</a>
  112.  <a class="menu" href="index.php@id=13">U┐ycie XML</a>
  113.  <a class="menu" href="index.php@id=14">Typy zmiennych</a> </td></tr></table></div></td>
  114.         </tr>
  115.         <tr>
  116.         <td width="460" valign="top"><img src="img/okno21.gif" border="0" width="460" height="10"></td>
  117.         </tr></table><span class="nag">Kurs ASP</span>
  118. <h2>Wysy│anie i odbieranie danych od u┐ytkownika.</h2>
  119. <h3>3.1 Wysy│anie danych do u┐ytkownika</h3>
  120. <p align="justify">W tej czΩ╢ci zostanie pokazane jak po│▒czyµ <code>VBScript</code> z <code>HTML</code>
  121. oraz jak umie╢ciµ rezultat wykonania kodu VBScript w dokumencie HTML wys│anym
  122. do przegl▒darki (klienta). Pos│u┐Ω siΩ przyk│adem, kt≤ry informuje o
  123. godzinie na serwerze oraz o ilo╢ci godzin w stosunku do dnia 01-01-2000. Przyk│ad
  124. zawiera funkcje operuj▒ce na dacie i czasie.</p>
  125. <p align="justify"><code>Przyk│ad.</code></p>
  126. <table border="0">
  127.   <tbody>
  128.     <tr>
  129.       <td align="right" vAlign="top">1:<br>
  130.         2:<br>
  131.         3:<br>
  132.         4:<br>
  133.         5:<br>
  134.         6:<br>
  135.         7:<br>
  136.         8:<br>
  137.         9:<br>
  138.         10:<br>
  139.         11:<br>
  140.         12:<br>
  141.         13:<br>
  142.         14:<br>
  143.         15:<br>
  144.         16:</td>
  145.       <td><% <code>@LANGUAGE = VBScript</code> %><br>
  146.         <%<br>
  147.         <code>Option Explicit<br>
  148.         Response.Expires = 0<br>
  149.         Dim czasTeraz, czasZaGodzine, czasRoznica<br>
  150.         czasTeraz = Time<br>
  151.         czasZaGodzine = DateAdd("h", 1, czasTeraz)<br>
  152.         czasRoznica = DateDiff("h", Now, #1/1/2000#)</code><br>
  153.         %><br>
  154.         <HTML><br>
  155.         <BODY><br>
  156.         Witaj U┐ytkowniku.<BR><br>
  157.         Godzina na serverze: <% <code>=czasTeraz</code> %>.<BR><br>
  158.         Za godzinΩ czas na serwerze bΩdzie: <% <code>=czasZaGodzine</code>
  159.         %>.<BR><br>
  160.         <%<br>
  161.         <code>If czasRoznica > 0 Then</code></td>
  162.     </tr>
  163.   </tbody>
  164. </table>
  165. <table border="0">
  166.   <tbody>
  167.     <tr>
  168.       <td align="right" vAlign="top">17:<br>
  169.         18:</td>
  170.       <td></td>
  171.       <td><code>Response.Write "Jeszcze " &
  172.         czasRoznica & " godzin "<br>
  173.         Response.Write "do roku 2000.<BR>" & VbCrLf</code></td>
  174.     </tr>
  175.   </tbody>
  176. </table>
  177. <table border="0">
  178.   <tbody>
  179.     <tr>
  180.       <td align="right" vAlign="top">19:</td>
  181.       <td><code>ElseIf czasRoznica < 0 Then</code></td>
  182.     </tr>
  183.   </tbody>
  184. </table>
  185. <table border="0">
  186.   <tbody>
  187.     <tr>
  188.       <td align="right" vAlign="top">20:<br>
  189.         21:</td>
  190.       <td></td>
  191.       <td><code>Response.Write "Ju┐ " &
  192.         Abs(czasRoznica) & " godzin minΩ│o od "<br>
  193.         Response.Write "rozpoczΩcia roku 2000.<BR>" &
  194.         VbCrLf</code></td>
  195.     </tr>
  196.   </tbody>
  197. </table>
  198. <table border="0">
  199.   <tbody>
  200.     <tr>
  201.       <td align="right" vAlign="top">22:</td>
  202.       <td><code>Else</code></td>
  203.     </tr>
  204.   </tbody>
  205. </table>
  206. <table border="0">
  207.   <tbody>
  208.     <tr>
  209.       <td align="right" vAlign="top">23:<br>
  210.         24:</td>
  211.       <td></td>
  212.       <td><code>Response.Write "Rok 2000 siΩ w│a╢nie
  213.         rozpocz▒│.<BR>" & VbCrLf<br>
  214.         Response.Write "<B>SZCZ╩ªLIWEGO NOWEGO ROKU !</B><BR>"
  215.         & VbCrLf</code></td>
  216.     </tr>
  217.   </tbody>
  218. </table>
  219. <table border="0">
  220.   <tbody>
  221.     <tr>
  222.       <td align="right" vAlign="top">25:<br>
  223.         26:<br>
  224.         27:<br>
  225.         28:</td>
  226.       <td><code>End If</code><br>
  227.         %><br>
  228.         </BODY><br>
  229.         </HTML></td>
  230.     </tr>
  231.   </tbody>
  232. </table>
  233. <p align="justify">Kiedy zostanie otwarty ten plik w przegl▒darce, na stronie pojawi siΩ napis
  234. podobny do poni┐szego.</p>
  235. <table border="0">
  236.   <tbody>
  237.     <tr>
  238.       <td>Witaj U┐ytkowniku.<br>
  239.         Godzina na serwerze: 10:17:34 AM.<br>
  240.         Za godzinΩ czas na serwerze bΩdzie: 11:17:34 AM.<br>
  241.         Ju┐ 8754 godzin minΩ│o od rozpoczΩcia roku 2000.</td>
  242.     </tr>
  243.   </tbody>
  244. </table>
  245. <p align="justify">Je╢li podejrzy siΩ ╝r≤d│o, zostanie wy╢wietlony nastΩpuj▒cy kod:</p>
  246. <table border="0">
  247.   <tbody>
  248.     <tr>
  249.       <td><HTML><br>
  250.         <BODY><br>
  251.         Witaj U┐ytkowniku.<BR><br>
  252.         Godzina na serwerze: 10:17:34 AM.<BR><br>
  253.         Za godzinΩ czas na serwerze bΩdzie: 11:17:34 AM.<BR><br>
  254.         Ju┐ 8754 godzin minΩ│o od rozpoczΩcia roku 2000.<BR><br>
  255.         </BODY><br>
  256.         </HTML></td>
  257.     </tr>
  258.   </tbody>
  259. </table>
  260. <p align="justify">Teraz zostan▒ opisane poszczeg≤lne linie kodu. Pierwsza z nich to:</p>
  261. <table border="0">
  262.   <tbody>
  263.     <tr>
  264.       <td><% @LANGUAGE = VBScript %></td>
  265.     </tr>
  266.   </tbody>
  267. </table>
  268. <p align="justify">Dyrektywa <code>@LANGUAGE</code> zosta│a u┐yta w celu okre╢lenia jΩzyka
  269. skryptu dla pliku <code>ASP</code>. Ta komenda musi znajdowaµ siΩ w pierwszej
  270. linii przed jakimikolwiek innymi blokami kodu. Dyrektywa <code>@LANGUAGE</code>
  271. informuje IIS o u┐ytym jΩzyku w skrypcie. Jej u┐ycie nie jest konieczne, lecz
  272. zalecane, gdy┐ w razie zmiany w ustawieniach IIS dotycz▒cych u┐ytego jΩzyka
  273. w plikach <code>*.asp</code>, np. z VBScript na JScript, wszystkie pliki kt≤re
  274. bΩd▒ zawiera│y komendy VBScript, a nie bΩd▒ posiada│y tej dyrektywy zwr≤c▒
  275. b│Ωdy w sk│adni.</p>
  276. <p align="justify">Poni┐ej przedstawiona komenda VBScript nakazuje deklaracjΩ ka┐dej u┐ytej
  277. zmiennej z skrypcie, u┐ywaj▒c instrukcji <code>Dim</code>, <code>Private</code>,
  278. <code>Public</code> oraz <code>ReDim</code>.</p>
  279. <table border="0">
  280.   <tbody>
  281.     <tr>
  282.       <td>Option Explicit</td>
  283.     </tr>
  284.   </tbody>
  285. </table>
  286. <p align="justify">Komenda powinna siΩ znajdowaµ tu┐ po linii zawieraj▒cej dyrektywΩ <code>@LANGUAGE</code>.
  287. Po jej wpisaniu nale┐y deklarowaµ wszystkie zmienne przed ich u┐yciem. Takie
  288. rozwi▒zanie jest bardzo pomocne, gdy w skrypcie u┐yje siΩ b│Ωdnie wpisanej
  289. zmiennej poniewa┐ w wyniku otrzyma siΩ b│▒d w postaci: <code>Variable
  290. undefined</code>, w momencie wywo│ania go spod przegl▒darki. W takim przypadku
  291. bΩdzie wiadomo, ┐e jaka╢ nazwa zmiennej zosta│a wpisana niepoprawnie.
  292. ZaoszczΩdzi to wielu godzin szukania b│Ωdu. Je╢li siΩ stwierdzi, ┐e skrypt
  293. dzia│a poprawnie mo┐na t▒ liniΩ usun▒µ, lecz w trakcie tworzenia i
  294. modyfikowania skryptu jest ona niemal nieodzowna. Na przyk│ad je╢li w
  295. programie u┐yta zostanie zmienna <code>nazwa</code> i w jakim╢ miejscu, przez
  296. zupe│ny przypadek, wpisana zostanie zamiast <code>nazwa</code> np. <code>nawza</code>,
  297. wtedy przy braku tej komendy program potraktuje zmienn▒ <code>nawza</code> jako
  298. now▒ zmienn▒, sformatuje j▒, czyli ustali jej warto╢µ na <code>0</code> lub
  299. ci▒g o zerowej d│ugo╢ci, a na stronie nie pojawi siΩ zamierzona informacja
  300. przechowywana w zmiennej <code>nazwa</code>.</p>
  301. <p align="justify">W czwartej linii znajduje siΩ komenda</p>
  302. <table border="0">
  303.   <tbody>
  304.     <tr>
  305.       <td>Response.Expires = 0</td>
  306.     </tr>
  307.   </tbody>
  308. </table>
  309. <p align="justify">Informuje ona przegl▒darkΩ po jakim czasie zawarto╢µ strony traci wa┐no╢µ.
  310. Warto╢µ okre╢lana jest w minutach. W naszym przypadku wynosi ona zero. Je╢li
  311. jest potrzeba okre╢lenia daty up│ywu wa┐no╢ci nale┐a│oby wpisaµ na przyk│ad
  312. nastΩpuj▒c▒ komendΩ:</p>
  313. <table border="0">
  314.   <tbody>
  315.     <tr>
  316.       <td>Response.ExpiresAbsolute = #January 1, 2000 00:00:00#</td>
  317.     </tr>
  318.   </tbody>
  319. </table>
  320. <p align="justify">W przypadku obu komend musz▒ one znale╝µ siΩ przed ca│▒ zawarto╢ci▒
  321. dokumentu formatu <code>HTML</code> oraz komendami <code>Response.Write</code>
  322. (chyba, ┐e u┐yto komendy <code>Response.Buffer = TRUE</code>, ale o tym za
  323. chwilΩ). W przeciwnym wypadku przegl▒darka poka┐e b│▒d w postaci: <code>Response
  324. object error (Header error)</code>. B│▒d jest zwi▒zany z tym, i┐ komenda <code>Response.Expires</code>
  325. zosta│a wys│ana do przegl▒darki po wcze╢niejszym przes│aniu nag│≤wka <code>HTTP</code>.</p>
  326. <p align="justify">Instrukcja</p>
  327. <table border="0">
  328.   <tbody>
  329.     <tr>
  330.       <td>Dim czasTeraz, czasZaGodzine, czasRoznica</td>
  331.     </tr>
  332.   </tbody>
  333. </table>
  334. <p align="justify">deklaruje u┐yte w skrypcie zmienne. S▒ one od siebie oddzielone
  335. przecinkiem. Kolenjne linie:</p>
  336. <table border="0">
  337.   <tbody>
  338.     <tr>
  339.       <td>czasTeraz = Time<br>
  340.         czasZaGodzine = DateAdd("h", 1, czasTeraz)<br>
  341.         czasRoznica = ("h", Now, #1/1/2000#)</td>
  342.     </tr>
  343.   </tbody>
  344. </table>
  345. <p align="justify">okre╢laj▒ warto╢ci zadeklarowanych zmiennych. Pierwsza linia ustala warto╢µ
  346. zmiennej <code>czasTeraz</code> na warto╢µ aktualnej godziny serwera, druga
  347. ustawia warto╢µ zmiennej <code>czasZaGodzine</code> na warto╢µ zmiennej <code>czasTeraz</code>
  348. zwiΩkszonej o jedn▒ godzinΩ, za╢ trzecia linia zapisuje do zmiennej <code>czasRoznica</code>
  349. warto╢µ r≤wn▒ r≤┐nicy czasu aktualnego i daty 1/1/2000 okre╢lon▒ w
  350. godzinach. Je╢li bie┐▒cy czas jest przed dat▒ 1/1/2000 to warto╢µ <code>czasRoznica</code>
  351. jest dodatnia, za╢ je╢li jest po tej dacie - zmienna przyjmuje warto╢µ ujemn▒.<br>
  352. Zmienne maj▒ ju┐ okre╢lone warto╢ci, teraz nale┐a│oby je pokazaµ u┐ytkownikowi
  353. w oknie przegl▒darki. Do tego s│u┐y instrukcja</p>
  354. <table border="0">
  355.   <tbody>
  356.     <tr>
  357.       <td><% Respone.Write(tekst) %></td>
  358.     </tr>
  359.   </tbody>
  360. </table>
  361. <p align="justify">lub inna r≤wnowa┐na, u┐yta w przyk│adzie</p>
  362. <table border="0">
  363.   <tbody>
  364.     <tr>
  365.       <td><% =tekst %></td>
  366.     </tr>
  367.   </tbody>
  368. </table>
  369. <p align="justify">Linia 9, tj. <code>%></code>, zamyka blok kodu VBScriptu.</p>
  370. <p align="justify">Linie 10-14 zawieraj▒ kod <code>HTML</code> z warto╢ciami zmiennych <code>czasTeraz</code>,
  371. <code>czasZaGodzine</code> oraz <code>czasRoznica</code>. W liniach 16-25 zosta│a
  372. u┐yta instrukcja <a class="LINK" href="#warunekIf">warunkowa If</a>. Instrukcja
  373. <code>Response.Write</code> wysy│a do przegl▒darki tekst. Mo┐e on zawieraµ
  374. zmienne i │a±cuchy. ú▒czenie tekstu ze zmiennymi odbywa siΩ za pomoc▒
  375. znaku <code>&</code>. Je╢li chcemy wys│aµ sygna│ przej╢cia do nastΩpnej
  376. linii nale┐y do│▒czyµ sta│▒ <code>VbCrLf</code>, np.</p>
  377. <table border="0">
  378.   <tbody>
  379.     <tr>
  380.       <td>Response.Write "Warto╢µ=" & wartosc &
  381.         ".<BR>" & <code>VbCrLf</code></td>
  382.     </tr>
  383.   </tbody>
  384. </table>
  385. <p align="justify"><code>Buforowanie</code></p>
  386. <p align="justify">Bufor jest magazynem, kt≤ry przechowuje dane przez pewien czas. U┐ycie
  387. buforowania pozwala na umieszczenie komendy <code>Response.Expires</code> za
  388. kodem <code>HTML</code> lub instrukcj▒ <code>Response.Write</code>. Przyk│ad
  389. przedstawiaj▒cy buforowanie:</p>
  390. <table border="0">
  391.   <tbody>
  392.     <tr>
  393.       <td><% <code>@LANGUAGE = VBScript</code> %><br>
  394.         <%<br>
  395.         <code>Option Explicit<br>
  396.         Response.Buffer = TRUE<br>
  397.         Response.Expires = 60</code><br>
  398.         %><br>
  399.         <HTML><br>
  400.         <BODY><br>
  401.         Witaj U┐ytkowniku.<BR><br>
  402.         Teraz widzisz wiadomo╢µ 1.<br>
  403.         <%<br>
  404.         <code>Response.Clear<br>
  405.         Response.Expires = 0</code><br>
  406.         %><br>
  407.         <HTML><br>
  408.         <BODY><br>
  409.         To jest szybkowygasaj▒ca wiadomo╢µ.<br>
  410.         <%<br>
  411.         <code>Response.Flush</code><br>
  412.         %><br>
  413.         </BODY><br>
  414.         </HTML><br>
  415.         <%<br>
  416.         <code>Response.End</code><br>
  417.         %><br>
  418.         Ta linia nigdy nie zostanie wys│ana do przegl▒darki.</td>
  419.     </tr>
  420.   </tbody>
  421. </table>
  422. <p align="justify">Kiedy zostanie uruchomiony powy┐szy kod na ekranie przegl▒darki pojawi siΩ
  423. napis:</p>
  424. <table border="0">
  425.   <tbody>
  426.     <tr>
  427.       <td>To jest szybkowygasaj▒ca wiadomo╢µ.</td>
  428.     </tr>
  429.   </tbody>
  430. </table>
  431. <p align="justify">Dodatkowo przegl▒darka zostanie poinformowana, ┐e zawarto╢µ strony straci
  432. natychmiast wa┐no╢µ.<br>
  433. Linia zawieraj▒ca:</p>
  434. <table border="0">
  435.   <tbody>
  436.     <tr>
  437.       <td>Response.Buffer = TRUE</td>
  438.     </tr>
  439.   </tbody>
  440. </table>
  441. <p align="justify">sygnalizuje, ┐e strona bΩdzie buforowana na serwerze i nie zostanie wys│ana
  442. odpowied╝ do przegl▒darki klienta dop≤ki wszystkie instrukcje z bie┐▒cej
  443. strony ASP nie zostan▒ przes│ane lub dop≤ki nie zostan▒ wywo│ane metody <code>Flush</code>
  444. lub <code>End</code> obiektu <code>Response</code>. Komenda <code>Response.Buffer</code>
  445. musi znajdowaµ siΩ przed kodem <code>HTML</code> lub instrukcj▒ <code>Response.Write</code>.</p>
  446. <p align="justify">Linia zawieraj▒ca:</p>
  447. <table border="0">
  448.   <tbody>
  449.     <tr>
  450.       <td>Response.Expires = 60</td>
  451.     </tr>
  452.   </tbody>
  453. </table>
  454. <p align="justify">okre╢la czas utraty wa┐no╢ci strony po 60 minutach. Takie rozwi▒zanie
  455. jest u┐yteczne w przypadku, gdy zawarto╢µ strony jest zmieniana co
  456. maksymalnie dwie godziny.</p>
  457. <p align="justify">Linie zawieraj▒ce:</p>
  458. <table border="0">
  459.   <tbody>
  460.     <tr>
  461.       <td><HTML><br>
  462.         <BODY><br>
  463.         Witaj U┐ytkowniku.<BR><br>
  464.         Teraz widzisz wiadomo╢µ 1.</td>
  465.     </tr>
  466.   </tbody>
  467. </table>
  468. <p align="justify">s▒ przechowywane w buforze (<code>Response.Buffer = TRUE</code>), ale nie
  469. zostan▒ nigdy wys│ane do przegl▒darki, poniewa┐ bufor jest czyszczony komend▒:</p>
  470. <table border="0">
  471.   <tbody>
  472.     <tr>
  473.       <td>Response.Clear</td>
  474.     </tr>
  475.   </tbody>
  476. </table>
  477. <p align="justify">Tak┐e w kolejnej linii, tj. <code>Response.Expires=0</code>, ustawione jest
  478. natychmiastowy up│yw wa┐no╢ci strony.<br>
  479. NastΩpnie, specjalna, szybkowygasaj▒ca wiadomo╢µ jest przechowywana w
  480. buforze. Nale┐y zauwa┐yµ, ┐e musisz zaopatrzyµ stronΩ we wszystkie
  481. znaczniki takie jak <code><HTML></code> lub <code><BODY></code> po
  482. tym, jak wyczyszczony zostanie bufor. Je╢li wymagane jest wys│anie w trybie
  483. natychmiastowym zawarto╢ci bufora do przegl▒darki nale┐y wykorzystaµ nastΩpuj▒c▒
  484. instrukcjΩ:</p>
  485. <table border="0">
  486.   <tbody>
  487.     <tr>
  488.       <td>Response.Flush</td>
  489.     </tr>
  490.   </tbody>
  491. </table>
  492. <p align="justify">Kolejne linie:</p>
  493. <table border="0">
  494.   <tbody>
  495.     <tr>
  496.       <td></BODY><br>
  497.         </HTML></td>
  498.     </tr>
  499.   </tbody>
  500. </table>
  501. <p align="justify">zostaj▒ wys│ane do przegl▒darki i zamkn▒ dokument <code>HTML</code>.<br>
  502. Inn▒ metod▒ obiektu <code>Response</code> jest <code>End</code>. Komenda:</p>
  503. <table border="0">
  504.   <tbody>
  505.     <tr>
  506.       <td>Response.End</td>
  507.     </tr>
  508.   </tbody>
  509. </table>
  510. <p align="justify">nakazuje serwerowi WWW zako±czyµ przetwarzanie skryptu i wys│aµ bie┐▒cy
  511. rezultat. Wszystkie linie znajduj▒ce siΩ pod t▒ komend▒ nie zostan▒
  512. wykonane (nie zostan▒ przes│ane do przegl▒darki).</p>
  513. <p align="justify"><code>Przekierowanie u┐ytkownika do innej strony</code></p>
  514. <p align="justify">Przekierowanie u┐ytkownika do innej strony mo┐na zastosowaµ w przypadku:</p>
  515. <table border="0">
  516.   <tbody>
  517.     <tr>
  518.       <td vAlign="top" width="90">-autoryzacji</td>
  519.       <td vAlign="top">-</td>
  520.       <td vAlign="top">kiedy u┐ytkownik nie jest zalogowany, mo┐e
  521.         zostaµ przekierowany do strony, na kt≤rej mo┐e siΩ zalogowaµ.</td>
  522.     </tr>
  523.     <tr>
  524.       <td vAlign="top">-formularza</td>
  525.       <td vAlign="top">-</td>
  526.       <td vAlign="top">kiedy formularz na stronie ASP jest wys│any
  527.         sam sobie i nastΩpuje sprawdzenie poprawno╢ci wprowadzonych danych. Je╢li
  528.         dane s▒ niepoprawne, wtedy zostaje wys│any komunikat o b│Ωdzie wraz
  529.         z oryginaln▒ form▒ formularza. Je╢li formularz zosta│ wype│niony
  530.         poprawnie, wtedy u┐ytkownik zostaje przekierowany do innej strony.</td>
  531.     </tr>
  532.   </tbody>
  533. </table>
  534. <p align="justify">W celu dokonania przekierowania nale┐y wywo│aµ metodΩ <code>Redirect</code>
  535. obiektu <code>Response</code>. Przyk│ad:</p>
  536. <table border="0">
  537.   <tbody>
  538.     <tr>
  539.       <td>Response.Redirect "/katalog/nowastrona.asp"</td>
  540.     </tr>
  541.   </tbody>
  542. </table>
  543. <p align="justify">lub r≤wnowa┐ne</p>
  544. <table border="0">
  545.   <tbody>
  546.     <tr>
  547.       <td>Response.Redirect("/katalog/nowastrona.asp")</td>
  548.     </tr>
  549.   </tbody>
  550. </table>
  551. <p align="justify"><code>Uwaga!</code> »adne dane wyj╢ciowe nie mog▒ znale╝µ siΩ przed
  552. metod▒ Redirect.</p>
  553. <a name="sessionID">
  554. <p align="justify"><code>Formatowanie ustawie± regionalnych</code></p>
  555. </a>
  556. <p align="justify">Postaµ daty w r≤┐nych standardach wygl▒da odmiennie, czy to dla u┐ytkownik≤w
  557. anglojΩzycznych, czy niemieckich. Domy╢lne ustawienia regionalne serwera s▒
  558. odpowiedzialne za jej wygl▒d. Ustawienia te mo┐na zmieniaµ korzystaj▒c z w│a╢ciwo╢ci
  559. <code>LCID</code> obiektu <code>Session</code>. Poni┐ej zosta│a przedstawiona
  560. tabela z warto╢ciami dla r≤┐nych ustawie± regionalnych.</p>
  561. <table border="1" cellSpacing="0">
  562.   <tbody>
  563.     <tr>
  564.       <th>Nazwa regionu</th>
  565.       <th>LCID</th>
  566.       <th>Data i czas</th>
  567.     </tr>
  568.     <tr>
  569.       <td>angielski (australijski)</td>
  570.       <td class="CENTER">3081</td>
  571.       <td>26/01/99 2:37:46</td>
  572.     </tr>
  573.     <tr>
  574.       <td>angielski (kanadyjski)</td>
  575.       <td class="CENTER">4105</td>
  576.       <td>26/01/99 2:37:46 AM</td>
  577.     </tr>
  578.     <tr>
  579.       <td>angielski (UK)</td>
  580.       <td class="CENTER">2057</td>
  581.       <td>26/01/99 02:37:46</td>
  582.     </tr>
  583.     <tr>
  584.       <td>angielski (ameryka±ski)</td>
  585.       <td class="CENTER">1033</td>
  586.       <td>1/26/99 2:37:46 AM</td>
  587.     </tr>
  588.     <tr>
  589.       <td>francuski (standard)</td>
  590.       <td class="CENTER">1036</td>
  591.       <td>26/01/99 02:37:46</td>
  592.     </tr>
  593.     <tr>
  594.       <td>niemiecki (standard)</td>
  595.       <td class="CENTER">1031</td>
  596.       <td>26.01.99 02:37:46</td>
  597.     </tr>
  598.     <tr>
  599.       <td>japo±ski</td>
  600.       <td class="CENTER">1041</td>
  601.       <td>99/01/26 2:37:46</td>
  602.     </tr>
  603.     <tr>
  604.       <td>rosyjski</td>
  605.       <td class="CENTER">1049</td>
  606.       <td>26.01.99 2:37:46</td>
  607.     </tr>
  608.     <tr>
  609.       <td>hiszpa±ski (wsp≤│czesny)</td>
  610.       <td class="CENTER">3082</td>
  611.       <td> </td>
  612.     </tr>
  613.   </tbody>
  614. </table>
  615. <h3>3.2 Odbieranie danych od u┐ytkownika</h3>
  616. <p align="justify"><code>Zmienne ╢rodowiskowe</code></p>
  617. <p align="justify">Czasem jest potrzeba uzyskania informacji na temat typu przegl▒darki
  618. klienta, adresu IP, itp. W tym celu mo┐na pos│u┐yµ siΩ grup▒ <code>ServerVariables</code>
  619. obiektu <code>Request</code>. Przyk│adem wykorzystania (odczytania) zmiennej ╢rodowiskowej
  620. jest poni┐szy zapis:</p>
  621. <table border="0">
  622.   <tbody>
  623.     <tr>
  624.       <td>sciezkaURL = Request.ServerVariables("SCRIPT_NAME")</td>
  625.     </tr>
  626.   </tbody>
  627. </table>
  628. <p align="justify">W przyk│adzie do zmiennej sciezkaURL zostanie zapisana rzeczywista ╢cie┐ka
  629. wykonywanego skryptu.<br>
  630. Teraz zostan▒ om≤wione wa┐niejsze zmienne ╢rodowiskowe:</p>
  631. <table border="0">
  632.   <tbody>
  633.     <tr>
  634.       <td vAlign="top">SCRIPT_NAME</td>
  635.       <td vAlign="top">-</td>
  636.       <td>rzeczywista ╢cie┐ka do wykonywanego skryptu</td>
  637.     </tr>
  638.     <tr>
  639.       <td vAlign="top">CONTENT_LENGTH</td>
  640.       <td vAlign="top">-</td>
  641.       <td>informacje jakie zosta│y wys│ane od klienta (u┐ytkownika)
  642.         przy pomocy metody POST do serwera</td>
  643.     </tr>
  644.     <tr>
  645.       <td vAlign="top">ALL_RAW</td>
  646.       <td vAlign="top">-</td>
  647.       <td>wszystkie nag│≤wki HTTP wys│ane od przegl▒darki
  648.         wywo│ane uruchomieniem skryptu</td>
  649.     </tr>
  650.     <tr>
  651.       <td vAlign="top">HTTP_HeaderName</td>
  652.       <td vAlign="top">-</td>
  653.       <td>nazwa nag│≤wka HTTP</td>
  654.     </tr>
  655.     <tr>
  656.       <td vAlign="top">HTTP_USER_AGENT</td>
  657.       <td vAlign="top">-</td>
  658.       <td>nazwa przegl▒darki, jej wersja i system operacyjny</td>
  659.     </tr>
  660.     <tr>
  661.       <td vAlign="top">HTTP_ACCEPT_LANGUAGE</td>
  662.       <td vAlign="top">-</td>
  663.       <td>preferowane jΩzyki</td>
  664.     </tr>
  665.     <tr>
  666.       <td vAlign="top">HTTP_REFERER</td>
  667.       <td vAlign="top">-</td>
  668.       <td>adres strony, kt≤ra wywo│a│a bie┐▒cy skrypt (stronΩ)</td>
  669.     </tr>
  670.     <tr>
  671.       <td vAlign="top">REMOTE_ADDR</td>
  672.       <td vAlign="top">-</td>
  673.       <td>adres IP klienta</td>
  674.     </tr>
  675.     <tr>
  676.       <td vAlign="top">SERVER_NAME</td>
  677.       <td vAlign="top">-</td>
  678.       <td>nazwa domeny serwera (np. www.nazwa.com),
  679.         wykorzystywana w przypadku wielu domen na jednym serwerze</td>
  680.     </tr>
  681.     <tr>
  682.       <td vAlign="top">QUERY_STRING</td>
  683.       <td vAlign="top">-</td>
  684.       <td>zawarto╢µ wype│nionego i wys│anego formularza</td>
  685.     </tr>
  686.   </tbody>
  687. </table>
  688. <p align="justify"><code>Formularze</code></p>
  689. <p align="justify"><code>a) Metoda GET</code></p>
  690. <p align="justify">U┐ycie metody <code>GET</code> sprawi, ┐e wszystkie dane umieszczone w wype│nionym
  691. formularzu zostan▒ do│▒czone do adresu URL i bΩd▒ odczytywalne od strony
  692. serwera poprzez u┐ycie grupy <code>Request.QueryString</code>. Przyk│adowy
  693. adres po wys│aniu formularza, kt≤rego metod▒ jest <code>GET</code>, mo┐e
  694. wygl▒daµ nastΩpuj▒co:</p>
  695. <table border="0">
  696.   <tbody>
  697.     <tr>
  698.       <td>http://www.nazwa.com/plik.asp?pole1=wartosc1&pole2=wartosc2&pole3=wartosc3</td>
  699.     </tr>
  700.   </tbody>
  701. </table>
  702. <p align="justify">Warto╢ci▒ zwr≤con▒ poprzez wywo│anie komendy <code>Request.QueryString("pole2")</code>
  703. bΩdzie <code>wartosc2</code>.</p>
  704. <p align="justify"><code>b) Metoda POST</code></p>
  705. <p align="justify">W przeciwie±stwie do metody <code>GET</code>, metoda <code>POST</code> nie
  706. do│▒cza danych z formularza do adresu URL. Dane od strony serwera s▒
  707. odczytywane przy pomocy zbioru <code>Request.Form</code>.</p>
  708. <p align="justify">Przyk│ad odczytania zawarto╢ci pola tekstowego z formularza, kt≤ry u┐ywa
  709. metody <code>POST</code>. Fragment dokumentu HTML:</p>
  710. <table border="0">
  711.   <tbody>
  712.     <tr>
  713.       <td><FORM ACTION="plik.asp" METHOD="POST"><br>
  714.         Podaj imiΩ: <INPUT TYPE="Text" NAME="imie"><BR><br>
  715.         Podaj nazwisko: <INPUT TYPE="Text" NAME="nazwisko"><BR><br>
  716.         <INPUT TYPE="Submit" NAME="submit" VALUE="Wyslij"><br>
  717.         </FORM></td>
  718.     </tr>
  719.   </tbody>
  720. </table>
  721. <p align="justify">Odczytanie pola z imieniem odbywa siΩ poprzez wpisanie komendy:</p>
  722. <table border="0">
  723.   <tbody>
  724.     <tr>
  725.       <td>Request.Form("imie")</td>
  726.     </tr>
  727.   </tbody>
  728. </table>
  729. <p align="justify">za╢ odczytanie pola z nazwiskiem:</p>
  730. <table border="0">
  731.   <tbody>
  732.     <tr>
  733.       <td>Request.Form("nazwisko")</td>
  734.     </tr>
  735.   </tbody>
  736. </table>
  737. <p align="justify">Podobnie dzieje siΩ w przypadku metody <code>GET</code>, z t▒ r≤┐nic▒,
  738. ┐e zamiast <code>Request.Form</code> wpisaµ nale┐y <code>Request.QueryString</code>.
  739. Przydatne funkcje:</p>
  740. <table border="0">
  741.   <tbody>
  742.     <tr>
  743.       <td vAlign="top">Trim(│a±cuch)</td>
  744.       <td vAlign="top">-</td>
  745.       <td vAlign="top">wycina wszystkie spacje znajduj▒ce siΩ
  746.         na pocz▒tku <code>│a±cucha</code> do momentu napotkania innego znaku</td>
  747.     </tr>
  748.     <tr>
  749.       <td vAlign="top">Replace(│a±cuch, ci▒g1, ci▒g2)</td>
  750.       <td vAlign="top"><code>-</code></td>
  751.       <td vAlign="top">zamienia ka┐dy <code>ciag1</code> na <code>ciag2</code>
  752.         napotkany w <code>│a±cuchu</code></td>
  753.     </tr>
  754.     <tr>
  755.       <td vAlign="top">isNumeric(dana)</td>
  756.       <td vAlign="top">-</td>
  757.       <td vAlign="top">zwraca warto╢µ TRUE je╢li <code>dana</code>
  758.         jest liczb▒, w przeciwnym wypadku zwraca warto╢µ FALSE</td>
  759.     </tr>
  760.     <tr>
  761.       <td vAlign="top">CInt(liczba)</td>
  762.       <td vAlign="top">-</td>
  763.       <td vAlign="top">konwertuje <code>liczbΩ</code> na liczbΩ
  764.         ca│kowit▒</td>
  765.     </tr>
  766.     <tr>
  767.       <td vAlign="top">CLng(liczba)</td>
  768.       <td vAlign="top">-</td>
  769.       <td vAlign="top">konwertuje <code>liczbΩ</code> na liczbΩ
  770.         ca│kowit▒ d│ug▒</td>
  771.     </tr>
  772.     <tr>
  773.       <td vAlign="top">isDate(dana)</td>
  774.       <td vAlign="top">-</td>
  775.       <td vAlign="top">zwraca warto╢µ TRUE je╢li <code>dana</code>
  776.         jest dat▒, w przeciwnym wypadku zwraca warto╢µ FALSE</td>
  777.     </tr>
  778.   </tbody>
  779. </table>
  780.  
  781. <hr size="1" color="#FFFFFF"><span class="stopa">
  782. <b>Autor:</b> <a href="mailto:stelmi@friko2.onet.pl" class="stopka">Krzysztof Stelmach</a><br>
  783. <b>Artyku│ ze strony:</b> <a href="http://www.asp.z.pl/" class="stopka" target="_blank">http://www.asp.z.pl/</a>
  784. </span><br></td>
  785.     </tr></table>
  786.     </div>
  787. </td>
  788. <td width="142" valign="top">
  789.  
  790.         <br>
  791.         <table border="0" cellpadding="0" cellspacing="0" width="142">
  792.         <tr>
  793.         <td width="142" valign="top"><img src="img/login.gif" border="0" width="142" height="13" alt="LOGIN"></td>
  794.         </tr>
  795.         <tr>
  796.         <td width="142" valign="top" background="img/okno1.gif">
  797.         
  798.             
  799.             <div align="center">
  800.             <table cellpadding="0" cellspacing="2" border="0" width="98%">
  801.             <form method="post" action="subskrypcja/login.php">
  802.             <tr><td width="30%"><span class="t">Login:</span></td><td width="68%"><input type="text" name="login" size="15" class="login"></td></tr>
  803.             <tr><td width="30%"><span class="t">Has│o:</span></td><td width="68%"><input type="password" name="haslo" size="15" class="login"></td></tr>
  804.             
  805.             <tr><td colspan="2"><center><input type="image" src="img/ok.gif"></td></tr>
  806.             </form></table></div>
  807.         
  808.         </td>
  809.         </tr>
  810.         <tr>
  811.         <td width="142" valign="top"><img src="img/okno2.gif" border="0" width="142" height="10"></td>
  812.         </tr></table>
  813.  
  814.         <br>
  815.         <table border="0" cellpadding="0" cellspacing="0" width="142">
  816.         <tr>
  817.         <td width="142" valign="top"><img src="img/art.gif" border="0" width="142" height="13" alt="ARTYKULY"></td>
  818.         </tr>
  819.         <tr>
  820.         <td width="142" valign="top" background="img/okno1.gif">
  821.         
  822.         <span class="m">
  823.         
  824.          -<a href="index.php@id=1" class="menu">"Edytory HTML'a"</a><br>
  825.          -<a href="index.php@id=2" class="menu">"Publikowanie witryny"</a><br>
  826.          -<a href="index.php@id=3" class="menu">"PHP w domu"</a><br>
  827.          -<a href="index.php@id=4" class="menu">"Przeszukiwanie stron"</a><br>
  828.          -<a href="index.php@id=204" class="menu">"Wprowadzenie do Javy"</a><br>
  829.          -<a href="index.php@id=210" class="menu">"Grafika w PHP"</a>
  830.         </span>
  831.         
  832.         </td>
  833.         </tr>
  834.         <tr>
  835.         <td width="142" valign="top"><img src="img/okno2.gif" border="0" width="142" height="10"></td>
  836.         </tr></table>
  837.         
  838.         <br>
  839.         <table border="0" cellpadding="0" cellspacing="0" width="142">
  840.         <tr>
  841.         <td width="142" valign="top"><img src="img/stat.gif" border="0" width="142" height="13" alt="ARTYKULY"></td>
  842.         </tr>
  843.         <tr>
  844.         <td width="142" valign="top" background="img/okno1.gif"><div align="left"><table border="0" cellpadding="0" cellspacing="0" width="138"><tr><td width="138"><ol><li><a href="index.php@id=135" class="stat">PHP - przyk│adowe skrypty</a> <span class="maleczarne">(1491)</span><br><li><a href="index.php@id=59" class="stat">Szablony 1</a> <span class="maleczarne">(833)</span><br><li><a href="index.php@id=145" class="stat">Kurs PHP</a> <span class="maleczarne">(817)</span><br><br><span class="maleczarne">ú▒cznie: 24140</span>        </ol>
  845.         <center><a href="http://stat.webmedia.pl/cgi-bin/anal?webarea" target="_blank">
  846. <img border=0 src="http://stat.webmedia.pl/cgi-bin/stat?webarea&stat4ur" alt="stat4u" width="40" height="10"></a></center>
  847.         </td></tr></table></div>
  848.         </td>
  849.         </tr>
  850.         <tr>
  851.         <td width="142" valign="top"><img src="img/okno2.gif" border="0" width="142" height="10"></td>
  852.         </tr></table>
  853.         
  854.         <br>
  855.         <table border="0" cellpadding="0" cellspacing="0" width="142">
  856.         <tr>
  857.         <td width="142" valign="top"><img src="img/sponsor.gif" border="0" width="142" height="13" alt="SPONSOR"></td>
  858.         </tr>
  859.         <tr>
  860.         <td width="142" valign="top" background="img/okno1.gif"><br>
  861.         <center><EMBED src="img/beep2.swf" quality=high bgcolor=#000000 WIDTH=120 HEIGHT=30></center>                            
  862.         </td>
  863.         </tr>
  864.         <tr>
  865.         <td width="142" valign="top"><img src="img/okno2.gif" border="0" width="142" height="10"></td>
  866.         </tr></table>
  867.  
  868.         <br>
  869.             <div align="center"><table border="0" cellpadding="2" cellspacing="0" width="120">
  870.             <tr>
  871.             <td width="120"><a href="button.php@id=1" target="_blank"><img src="img/cgi.gif" border="0"></a></td>
  872.             </tr>
  873.             <tr>
  874.             <td width="120"><a href="button.php@id=2" target="_blank"><img src="img/ygreg.gif" border="0"></a></td>
  875.             </tr>
  876.             <tr>
  877.             <td width="120"></td>
  878.             </tr>
  879.             </table>
  880.             </div>
  881.         
  882.  
  883. </td>
  884. </tr>
  885. <tr>
  886. <td width="770" valign="top" colspan="3" align="right"><br><br><span class="m">All rights reserved by <a href="mailto:web-area@web-area.org">J&J Filipowscy Design & Code</a></td>
  887. </tr></table></div>
  888.  
  889.  
  890. </body>
  891. </html>