home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 April / PCWorld_2000-04_cd.bin / Komunik / Servery / PinkNet / pnws1076prof.exe / file0050.bin < prev    next >
Encoding:
Text File  |  2000-03-12  |  2.8 KB  |  71 lines

  1. <HTML>
  2. <HEAD>
  3.    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1250">
  4.    <META NAME="GENERATOR" CONTENT="Mozilla/4.02 [en] (Win95; I) [Netscape]">
  5.    <META NAME="Author" CONTENT="Tomas Rosa">
  6.    <TITLE>Vstup dat</TITLE>
  7.  
  8. <!--#include virtual="/perl_header.inc"-->
  9.  
  10. <div style="font-family:Tahoma,Helvetica,Arial; font-size:10pt;">
  11.  
  12. <h3>Jak zpracovat zasφlanß data</h3>
  13.  
  14. Jak ji₧ bylo uvedeno v²Üe, skript m∙₧e dostat dv∞mi metodami. Ka₧dß
  15. metoda mß svΘ v²hody a nev²hody. Prvnφ metodou je GET. Mezi jejφ v²hody
  16. pat°φ to, ₧e ze starny prohlφ₧eΦe se dß pou₧φt u jekΘhokoliv odkazu. VÜechna
  17. data se tedy zasφlajφ p°ipojenß k URL. Jednotlivß polφΦka jsou p°edßna
  18. ve form∞ <I>nßzev=hodnota</I> a jsou odd∞lena znakem "<B> &</B>".
  19. Aby to bylo slo₧it∞jÜφ, jsou specißlnφ znaky vyskytujφcφ se v hodnotßch
  20. prom∞nn²ch zak≤dovßny nßsledujφcφm zp∙sobem: </P>
  21.  
  22. <UL>
  23. <LI>" " (mezera) - je k≤dovßna jako znak "+" </LI>
  24.  
  25. <LI>interpunkΦnφ znamΘnka apod. - jsou k≤dovßny jako "%hh", kde
  26. hh je dvoucifernß hexadecimßlnφ hodnota ASCII k≤du znaku </LI>
  27. </UL>
  28.  
  29. <P>áááJednotlivΘ prohlφ₧eΦe se mφrn∞ liÜφ v tom, kterΘ znaky k≤duji, ale
  30. uvedenß pravidla platφ obecn∞. Pro dek≤dovßnφ tedy staΦφ v²skyty znaku
  31. "+" nahradit mezerami a v²skyty kombinacφ "%hh" nahradit
  32. znakem s p°φsluÜn²m ASCII k≤dem. Snadno tedy dek≤dujeme °et∞zec: <I>Ahoj%20lidi%21</I>.
  33. Data jsou k URL p°ipojovßny na konec pomocφ znaku "?". Adresa
  34. pak tedy m∙₧e vypadat nßsledovn∞: </P>
  35.  
  36. <CENTER><P><I>http://www.server.cz/cgi-bin/mujskript.cgi?polozka1=data1&polozka2=data2.</I></P></CENTER>
  37.  
  38. <CENTER><P> </P></CENTER>
  39.  
  40. <P>áááMetoda GET je vÜak nevhodnß z n∞kolika d∙vod∙. Nap°φklad pokud po₧adujeme
  41. jmΘno a heslo, tak to je pak viditelnΘ v URL. Tak₧e ka₧d² kdo se koukne
  42. n∞komu p°es rameno, uvidφ tyto informace. Druhou nev²hodou je to, ₧e prohlφ₧eΦe
  43. nepodporujφ nekoneΦnΘ URL a proto i data nejsou omezenß.</P>
  44.  
  45. <P>áááOproti tomu metoda POST tyto metody odstr≥uje. Nev²hodou je vÜak
  46. to, ₧e data v₧dy musφ pochßzet z formulß°e. Nelze je tedy zaslat nap°φklad
  47. z odkazu.</P>
  48.  
  49. <P>áááJako p°φklad zde uvßdφme Φßst programu, kter² Φte data do pole $DATA{'<FONT SIZE=-1>nßzev
  50. polo₧ky</FONT>'} jak z volßnφ metodou POST tak GET</P>
  51.  
  52. <UL>
  53. <UL>
  54. <PRE><B>sub <I>ctidata
  55. </I></B>{
  56.    read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
  57.    if ($ENV{'QUERY_STRING'}) {$buffer = "$buffer\&$ENV{'QUERY_STRING'}";}
  58.    @pairs = split(/&/,$buffer);
  59.    foreach $pair (@pairs)          {
  60.      ($name,$value) = split(/=/,$pair);
  61.      $value =~ tr/+/ /;
  62.      $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
  63.      <B>$DATA{$name}</B> = $value;
  64.    }
  65. }</PRE>
  66. </UL>
  67. </UL>
  68.  
  69. </div>
  70.  
  71. <!--#include virtual="/main_footer.inc"-->