home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / Chip_2004-04_cd1.bin / chplus / interval / clanek07.htm < prev    next >
Encoding:
Extensible Markup Language  |  2004-02-01  |  15.6 KB  |  146 lines

  1. <?xml version='1.0' encoding='windows-1250'?>
  2. <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
  3. <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='cs' lang='cs'>
  4. <head>
  5. <meta http-equiv='Content-Type' content='text/html; charset=windows-1250' />
  6. <meta http-equiv='Content-language' content='cs' />
  7. <meta http-equiv='Cache-control' content='no-cache' />
  8. <meta http-equiv='Pragma' content='no-cache' />
  9. <meta http-equiv='Expires' content='0' />
  10. <meta name='robots' content='index, follow' />
  11. <meta name='description' content='Interval.cz - Internetov² magazφn o webdesignu, v²voji webov²ch aplikacφ a e-komerci. VÜe podstatnΘ o technologiφch XHTML, HTML, CSS, DHTML, JavaScript, XML, .NET, ASP, PHP, Java, J2ME, SQL, WAP...' />
  12. <meta name='keywords' content='Interval' />
  13. <meta http-equiv='imagetoolbar' content='no' />
  14. <meta http-equiv='MSThemeCompatible' content='no' />
  15. <meta name='MSSmartTagsPreventParsing' content='true' />
  16. <title>Interval.cz - denn∞ o tvorb∞ webu a e-komerci</title>
  17. <style media='all' type='text/css'>
  18. @import '__services/styles/interval_articles.css';
  19. </style>
  20. </head>
  21. <body class='interval interval-articles'>
  22. <div id='page-header'><div id='interval-logo'><h1 title='Interval.cz - denn∞ o tvorb∞ webu a e-komerci (logo & index link)'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Interval.cz<span></span></a></h1></div><div id='advertising-page-header'></div><div class='page-maker'> </div></div>
  23. <div id='page-topmenu'><h2 class='textversion'>Navigace</h2><div id='page-mainmenu'><h3 class='textversion'>Hlavnφ menu</h3><ul><li class='first selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Titulnφ strana</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=14'>Webdesign</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=15'>V²voj aplikacφ</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=18'>E-komerce</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=17'>Nßstroje</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=16'>Magazφn</a></li><li class='right selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.inshop.cz'>Knihkupectvφ</a></li><li class='right'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interforum.interval.cz'>Interforum</a></li></ul></div><div id='page-mainmenu-maker'> </div></div>
  24. <div id='page-body'><div id='page-left'><div id='article'>
  25.  
  26.  
  27.  
  28. <h2>Zßklady pou₧itφ cookies v ASP.NET</h2>
  29. <p id='prepend'>V Φlßnku si ukß₧eme, jak v ASP.NET pracujeme s cookies, jejich uklßdßnφ i Φtenφ. V ukßzkovΘm p°φkladu dßme u₧ivateli aplikace mo₧nost ulo₧it si svou volbu, aby aplikace i p°i pozd∞jÜφm pou₧itφ pracovala s ji₧ d°φve zvolen²m nastavenφm.</p>
  30.  
  31.  
  32. <p>V ukßzkovΘ aplikaci budeme pracovat s jednou hodnotou. Hodnotu bude u₧ivatel volit zatrhßvacφm polφΦkem. P°i zatr₧enΘm poli bude aplikace <a href='http://interval.cz/clanek.asp?article=2641' title='R∙₧iΦka, PAvel: NauΦte AdRotator zobrazovat flash v ASP.NET'>zobrazovat bannery</a>. Dφky ulo₧enφ do cookie si aplikace u₧ivatelovu volbu zapamatuje, a tak bude zachovßna i p°i dalÜφm vstupu do naÜφ aplikace - stav bude z cookie obnoven. ProhlΘdn∞te si <a href='http://interval.cz/podklady/ruzicka/aspx/735/Default.aspx'>ukßzku</a> (<a href='podklady/ruzicka/aspx/735/aspnetcookies.zip'>zdrojov² k≤d</a>). Pro ov∞°enφ sprßvnΘ funkce uklßdßnφ do cookie je nejlΘpe si otev°φt aplikaci ve dvou oknech, v jednom provßd∞t nastavovßnφ aplikace (dochßzφ k postback∙m) a ve druhΘm jen obnovovat okno (nedochßzφ k postbacku) a pozorovat v n∞m chovßnφ aplikace.</p>
  33. <p>Pro prßci s cookies vyu₧φvßme t°φdu HttpCookie (vytvß°enφ, nastavenφ vlastnostφ) a <a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebHttpContextClassTopic.asp'>HttpContext</a> skrze <a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaspnetintrinsicobjects.asp'>vestav∞nΘ objekty</a> (tzv. intrinsic) <a href='http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemwebhttpcontextclassrequesttopic.asp'>Request</a> (pro Φtenφ) a <a href='http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemwebhttpcontextclassresponsetopic.asp'>Response</a> (odeslßnφ klientovi).</p>
  34.  
  35. <div class='sample'>
  36. <%@ Page Language="C#" Trace="False" EnableSessionState="False" Debug="False" %>
  37. <br /><script runat="server">
  38. <br />void Page_Load(object sender, System.EventArgs e)
  39. <br />{
  40. <br />  if (!IsPostBack)
  41. <br />  {
  42. <br />    HttpCookie myCookie = new HttpCookie("ckBanner");
  43. <br />    myCookie = Request.Cookies["ckBanner"];
  44. <br />    if (myCookie != null)
  45. <br />      chkStatus.Checked = Boolean.Parse(myCookie.Value);
  46. <br />    SaveCheckBoxStatus(sender,e);
  47. <br />  }
  48. <br />  ifrBanner.Visible = chkStatus.Checked;
  49. <br />}
  50. <br />
  51. <br />void SaveCheckBoxStatus(object sender, EventArgs e)
  52. <br />{
  53. <br />  HttpCookie myCookie = new HttpCookie("ckBanner");
  54. <br />  myCookie.Value = (chkStatus.Checked).ToString();
  55. <br />  myCookie.Expires = DateTime.Now.AddYears(1);
  56. <br />  Response.Cookies.Add(myCookie);
  57. <br />}
  58. <br /></script><?xml version="1.0" encoding="utf-8" ?>
  59. <br /><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  60. <br /><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs-CZ" lang="cs-CZ" dir="ltr">
  61. <br />  <head>
  62. <br />    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  63. <br />    <title>Prßce s cookies</title>
  64. <br />  </head>
  65. <br />  <body>
  66. <br />    <form RunAt="server">
  67. <br />      <asp:CheckBox Id="chkStatus" AutoPostBack="True" OnCheckedChanged="SaveCheckBoxStatus" Text="zobrazovat banner" Checked="True" RunAt="server" />
  68. <br />    </form>
  69. <br />    <iframe Id="ifrBanner" Visible="false" src="ShowBanner.aspx" width="468" height="60" border="0" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" RunAt="server" />
  70. <br />  </body>
  71. <br /></html>
  72. </div>
  73.  
  74. <p>Ve webovΘm formulß°i mßme <a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebuiwebcontrolscheckboxclasstopic.asp'>CheckBox</a>, kter² slou₧φ k nastavenφ aplikace. Dφky vlastnosti <a href='http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemwebuiwebcontrolscheckboxclassautopostbacktopic.asp'>AutoPostBack="true"</a> dojde k odeslßnφ formulß°i pouh²m kliknutφm na prvek. Pokud bychom cht∞li aplikaci oprostit od zßvislosti na JavaScriptu, m∙₧eme mezi znaΦky <samp>noscript</samp> umφstit <a href='http://interval.cz/clanek.asp?article=2776' title='R∙₧iΦka, Pavel: Calendar Control pou₧iteln² i bez JavaScriptu v ASP.NET'>alternativnφ odesφlacφ tlaΦφtko</a>. P°i zm∞n∞ nastavenφ je volßna metoda <em>SaveCheckBoxStatus</em>, kterß ulo₧φ aktußlnφ volbu do cookie (jejφ funkci si popφÜeme pozd∞ji).</p>
  75. <p>Reklamnφ bannery zobrazuje v iframe aplikace, kterou jsme si vyrobili ji₧ d°φve. P°idßnφm atributu RunAt="server" jsme z n∞j vytvo°ili tzv. <a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbtskaddinghtmlcontrolstowebformspage.asp'>Html Control</a>. M∙₧eme tak nastavovat i vlastnost <em>Visible</em> skrze identifikßtor <em>Id</em>.</p>
  76. <p>P°i prvnφm naΦtenφ strßnky (<a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebUIPageClassIsPostBackTopic.asp'>IsPostBack</a> je <em>false</em>) provedeme v obsluze <a href='http://interval.cz/clanek.asp?article=1972' title='Jirava, Jaroslav: Äivotnφ cyklus ASP.NET strßnky'>Page_Load</a> pokus o nastavenφ zatrhßvacφho polφΦka podle ulo₧enΘ hodnoty v cookie. Vytvo°φme si novou instanci cookie a nastavφme ji na naÜi hodnotu z Request.Cookies. Pokud nenφ hodnota z cookie p°eΦtena (klient nepodporuje cookies nebo pou₧il naÜi aplikaci poprvΘ), bude naÜe cookie <em>null</em>. Pokud nenφ <em>null</em>, pou₧ijeme metodu <a href='http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystembooleanclassparsetopic.asp'>Boolean.Parse</a> pro zφskßnφ stavu zatr₧enφ checkboxu. Dßle potom provedeme p°eulo₧enφ hodnoty cookie volßnφm metody SaveCheckBoxStatus, Φφm₧ se dosßhne nejen ulo₧enφ aktußlnφho stavu checkboxu (zj. v p°φpad∞, ₧e jde o v∙bec prvnφ spuÜt∞nφ aplikace a naÜe cookie v∙bec neexistuje), ale takΘ obΦerstvenφ doby platnosti naÜφ cookie (v naÜφ aplikaci ji uklßdßme s platnostφ jeden rok).</p>
  77. <p>P°i ka₧dΘm naΦtenφ strßnky nastavujeme viditelnost prvku iframe (zobrazuje reklamnφ bannery) podle hodnoty checkboxu, Φφm₧ docφlφme zobrazenφ nebo skrytφ banneru.</p>
  78. <p>P°i kliknutφ na zatrhßvacφ polφΦko je volßna metoda <em>SaveCheckBoxStatus</em>. Vytvo°φme instanci cookie (v naÜem p°φkladu s jmΘnem <em>ckBanner</em>). Hodnotu tΘto cookie nastavφme na °et∞zec odpovφdajφcφ stavu zatrhßvacφho polφΦka. Dßle tΘto cookie nastavφme dobu expirace, zde na dobu jednoho roku. Nakonec metodou <a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpcookiecollectionclassaddtopic.asp'>Add()</a> p°idßme cookie do <a href='http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemwebhttpcookiecollectionclasstopic.asp'>kolekce cookies</a>, kterΘ aplikace odeÜle klientovi v <a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpresponseclasscookiestopic.asp'>Response.Cookies</a>. Pokud si tedy obsah hlaviΦek, p°ipraven²ch k odeslßnφ klientovi, nesma₧eme nap°φklad nevhodn²m pou₧itφm <a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebHttpResponseClassClearTopic.asp'>Response.Clear()</a>, ulo₧φ se cookie u klienta, a to je vÜe, Φeho jsme v aplikaci pot°ebovali dosßhnout.</p>
  79. <p>Zde popsan² zp∙sob prßce s individußlnφmi cookies samoz°ejm∞ nenφ jedin², ASP.NET poskytuje i mnohem komplexn∞jÜφ t°φdu <a href='http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemwebhttpcookiecollectionclasstopic.asp'>HttpCookieCollection</a> pro prßci s cookies v rßmci celΘ webovΘ aplikace. ASP.NET samo o sob∞ vyu₧φvß cookies pro uklßdßnφ dodateΦn²ch informacφ pro b∞h aplikace, nap°φklad identifikßtor session nebo pomocnΘ informace pro <a href='http://interval.cz/clanek.asp?article=1371' title='Kopp, Ond°ej: Jak zabezpeΦit aplikace v ASP.NET, 2. dφl'>forms autentizaci</a>. Prßce s nimi je u₧ ale na dalÜφ Φlßnek.</p>
  80.  
  81.  
  82.  
  83. <div id='article-author'>
  84. <a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/autor.asp?author=72'>R∙₧iΦka, Pavel</a> (15.1. 2004)
  85. <div id='article-about-author'>odborn² redaktor Interval.cz</div>
  86. </div>
  87.  
  88.  
  89.  
  90. </div></div>
  91. <div id='page-right'><h2 class='textversion'>Prav² sloupek</h2>
  92. <div id='search'><h3 class='textversion'>Vyhledßvßnφ</h3><form method='get' action='http://interval.cz/search.asp'><div><input type='text' name='hledej' class='text' /><input type='submit' class='submit' value='Najdi!' /></div></form><div><a href='http://interval.cz/search_ex.asp'>RozÜφ°enΘ vyhledßvßnφ</a></div></div>
  93.  
  94.  
  95.  
  96. <div class='page-right-box book'>
  97.     <h3>Kni₧nφ novinka</h3>
  98.     <div class='page-right-box-in'>
  99.         <div class='book-top'>
  100.             <h4><a href='http://interval.cz/__redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=236'>NauΦte se ASP. NET za 21 dnφ</a></h4>
  101.         </div>
  102.     </div>
  103.     <div class='image'>
  104.         <a href='http://interval.cz/__redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=236'><img src='podklady/knihy/image.jpg' alt='obßlka' title='obßlka' /></a>
  105.     </div>
  106.     <div class='book-bottom'>Cena: <span class='book-price-old'>690,00 KΦ</span> <span class='book-price-new'>621,00 KΦ</span></div>
  107. </div>
  108.  
  109.  
  110.  
  111. <div class='page-right-box reading'>
  112.     <h3>NejΦten∞jÜφ</h3>
  113.     <div class='page-right-box-in'>
  114.         <ul>
  115. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=1211'>Statistika p°φstup∙ v PHP - detekce operaΦnφho systΘmu</a></li>
  116. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3041'>SMARTY - funkce</a></li>
  117. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3044'>Elektronick² ·°ednφk - pozvoln² zaΦßtek</a></li>
  118. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3064'>Interval v roce 2004: Publish or perish!</a></li>
  119. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3034'>Jak budovat a rozvφjet e-shop - transakce</a></li>
  120.         </ul>
  121.     </div>
  122. </div>
  123.  
  124.  
  125.  
  126. <div class='page-right-box cauldron'>
  127.     <h3>Diskuznφ kotel</h3>
  128.     <div class='page-right-box-in'>
  129.         <ul>
  130. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2561'>Internet Explorer 7 se jmenuje MyIE2</a><div>149 komentß°∙ </div></li>
  131. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2388'>otvovice.cz</a><div>148 komentß°∙ </div></li>
  132. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=1304'>BezpeΦnost p°edevÜφm û include v PHP</a><div>95 komentß°∙ </div></li>
  133. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2965'>ImplementaΦnφ chyby v prohlφ₧eΦφch I.</a><div>59 komentß°∙ </div></li>
  134. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2980'>xoprivate.com</a><div>59 komentß°∙ </div></li>
  135.         </ul>
  136.     </div>
  137. </div>
  138.  
  139.  
  140.  
  141. <div class='page-right-box emailserv'><h3>Email servis</h3><div class='page-right-box-in'><form action='prihlaseni.asp' method='post'><div class='shell'><input class='text' type='text' name='adresa' /></div><div class='shell'><input class='radio' type='radio' value='1' name='co' checked='checked' />T²dennφ p°ehled Φlßnk∙</div><div class='shell'><input class='radio' type='radio' value='2' name='co' />HELP konference</div><div class='shell'><input class='submit' type='submit' value='P°ihlßsit' /></div></form></div></div>
  142. </div>
  143. <div class='page-maker'> </div><div class='page-maker-white'> </div></div>
  144. <div id='page-foot'><div id='page-foot-menu'><a href='http://interval.cz/reklama.asp'>Inzerce na Interval.cz</a> | <a href='http://interval.cz/redakce.asp'>Redakce Interval.cz</a> | <a href='http://interval.cz/autori.asp'>Hledßme novΘ autory</a></div><div id='issn'>ISSN 1212-8651</div><div id='page-foot-zoner'>© Zoner software, s.r.o., vÜechna prßva vyhrazena, tento server dodr₧uje <a href='http://interval.cz/privacy.asp'>prßvnφ p°edpisy</a>o ochran∞ osobnφch ·daj∙.</div></div>
  145. </body>
  146. </html>