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