Apache a CGI skripty IV. - metoda POST

Dnes si probereme dekódování dat z HTML formuláře metodou POST. Metoda POST poznáte při odkliknutí formuláře například tím, že prohlížeč bude chtít potvrdit poslání dat.
Dnes si probereme dekódování dat z HTML formuláře metodou POST. Metoda POST poznáte při odkliknutí formuláře například tím, že prohlížeč bude chtít potvrdit poslání dat.

Funkčnost
Po odkliknutí HTML formuláře, nejdříve klient (v našem případě HTML prohlížeč) naváže spojení CGI skriptem, a teprve potom pošle data, která uživatel vyplnit ve formuláři.

Parametry Apache
Pro zjištění typu poslání dat z formuláře použijeme parametr REQUEST_METHOD , který mám může říct, že se jedná buďto o metodu POST, GET či PUT (zbylé dvě metody si popíšeme příště). Dalším důležitým parametrem je CONTENT_LENGTH, který zjistí, jaká je délka odeslaných dat z HTML formuláře.

HTML formulář
Zde si uvedeme jednoduchý příklad HTML formuláře. Popíšeme si nejdříve co znamenají jednotlivé HTML tagy, kterými jsem vytvořil nížeji uvedený formulář.

Tento řádek říká, že data se budou posílat metodou POST (ACTION=POST), a také, že skript, který má data přijmout je /cgi-bin/cgi4.cgi na vašem www serveru.

<FORM ACTION=/cgi-bin/cgi4.cgi METHOD=POST>
  
Vytvořeni textové pole formuláře (TYPE=TEXT) o velikosti 20 znaků (SIZE=20) a názvu parametr1 (NAME=parametr1), který nabývá hodnoty hodnota1 (VALUE=hodnota1)

<INPUT TYPE=TEXT SIZE=20 NAME=parametr1 VALUE="hodnota1">
  
Vytvoření tlačítka „Ok – Odeslat data” pro poslání dat CGI skriptu

<INPUT TYPE=SUBMIT VALUE="OK - Odeslat data">
  
Vytvoření tlačítka pro vymazání všech udajů z formuláře.

<INPUT TYPE=RESET VALUE="Vymazat formular">
  
Nyní umístněte tento HTML formulář někam na Váš www server, například do C:\Program Files\Apache Group\Apache\htdocs\cgi4.html ($HOME/apache/share/htdocs/cgi4.html). Z pohledu serveru je to URL http://localhost/cgi4.html

Příklad HTML formuláře:

<HTML>
  <HEAD>
  <TITLE>Formular CGI SKRIPTU 4</TITLE>
  </HEAD>
  <BODY BGCOLOR=#FFFFFF>
  
  <H1>Formular CGI SKRIPTU 4</H1>
  
  <FORM ACTION=/cgi-bin/cgi4.cgi METHOD=POST>
   <INPUT TYPE=TEXT SIZE=20 NAME=parametr1 VALUE="hodnota1"><BR>
   <INPUT TYPE=TEXT SIZE=20 NAME=parametr2 VALUE="hodnota2"><BR>
   <INPUT TYPE=TEXT SIZE=20 NAME=parametr3 VALUE="hodnota3"><BR>
   <INPUT TYPE=TEXT SIZE=20 NAME=parametr4 VALUE="hodnota 4"><BR>
  
   <INPUT TYPE=SUBMIT VALUE="OK - Odeslat data">
   <INPUT TYPE=RESET VALUE="Vymazat formular">
  </FORM>
  
  </BODY>
  </HTML>
  

CGI skript
Níže je uvedený CGI skript, kterým můžeme dekódovat data z výše uvedeného formuláře. Stačí pokud si CGI skript uložíte do svého adresáře pro CGI skripty, v našem případě je to adresář C:\Program Files\Apache Group\Apache\cgi-bin\cgi4.cgi ($HOME/apache/share/cgi-bin/cgi4.cgi). Z pohledu serveru je to URL http://localhost/cgi-bin/cgi4.cgi

Verze CGI skriptu pro Linux/Unix je stejná jako zde uvedený příklad pro Windows, stačí pouze upravit první řádek skriptu.

#!/usr/bin/perl

Příklad CGI skriptu:

#!c:/perl/bin/perl.exe
  
   if ($ENV{'REQUEST_METHOD'} eq 'POST') {
   read(STDIN, $bufer, $ENV{'CONTENT_LENGTH'});
   @dve = split(/&/, $bufer);
   }
   else {
   &error;
   }
  
   foreach $dve (@dve) {
   ($jmeno, $hodnota) = split(/=/, $pair);
   $hodnota =~ tr/+/ /;
   $hodnota =~ s/<!--(.¦\n)*-->//g;
   $promena{$jmeno} = $hodnota;
  
   sub error {
   print "Content-type: text/html\n\n";
   print "<HTML>";
   print "<TITLE>Chyba</TITLE>";
   print "<H2>Chyba: Dekodovani dat neni provadeno metodou";
   print " POST ,ale nejspise metodou GET</H2>";
   print "</HTML>";
   exit;
   }
  }
  
  print "Content-type: text/html\n\n";
  print "<HTML><HEAD><TITLE>CGI SKRIPT 4</TITLE></HEAD>\n";
  print "<BODY BGCOLOR=#FFFFFF>\n";
  
  print "<H2>CGI SKRIPT 4</H2>";
  print "<BR>Parametr 1: $promena{'parametr1'} ";
  print "<BR>Parametr 2: $promena{'parametr2'} ";
  print "<BR>Parametr 3: $promena{'parametr3'} ";
  print "<BR>Parametr 4: $promena{'parametr4'} ";
  
  print "</BODY></HTML>\n";
  exit;
  

Skript si popíšeme v příštím díle, kde si ukážeme jak v jednom CGI skriptu dekódovat data metodou GET i POST. Pokud máte jakékoliv dotazy či připomínky zasílejte jej na adresu erik@email.cz
  

Váš názor Další článek: Už to prasklo: privatizace SPT Telecomu byla uplacena!

Témata článku: Software, Programování, Linux, CGI, Reset, Head, Post, Skript, Exit, Split, Action, Print, HTML, Metoda, Apache


Určitě si přečtěte

Nová americká jaderná puma změní strategii boje

Nová americká jaderná puma změní strategii boje

** Bombardér Northrop Grumman B-2 Spirit amerického letectva nedávno svrhl jadernou pumu ** Šlo o test nové varianty pumy B61-12 ** Ta by měla mít hlavice schopné explodovat se silou 0,3 až 50 kilotun

Stanislav Mihulka | 63

Kde se bere elektřina v zásuvce? Poznejte 10 tajemství venkovních stožárů s dráty

Kde se bere elektřina v zásuvce? Poznejte 10 tajemství venkovních stožárů s dráty

Elektřina se vyrábí v elektrárnách, ale do zásuvek v našich domovech to pak má ještě hodně daleko. Dnes se na tuhle dlouhou cestu podíváme.

David Polesný | 82

Musk pošle lidi na oblet Měsíce. Japonský podnikatel Maezawa vezme na cestu až osm umělců

Musk pošle lidi na oblet Měsíce. Japonský podnikatel Maezawa vezme na cestu až osm umělců

** SpaceX chce nejdříve v roce 2023 vyslat lidi na oblet Měsíce ** Hlavním pasažérem bude japonský podnikatel Jusaku Maezawa, který vezme na cestu až 8 umělců ** Pětidenní cesta proběhne v chystané lodi BFS

Petr Kubala | 14

Lenovo přivezlo na IFA 2018 skutečné inovace. Tyto tři notebooky stojí za to

Lenovo přivezlo na IFA 2018 skutečné inovace. Tyto tři notebooky stojí za to

** Yoga C930 nabídne revoluční reproduktor v kloubu displeje ** Yoga Book C930 představuje zdařilý reparát podivného Yoga Booku ** ThinkPad X1 Extreme se může pochlubit extrémní výbavou v tenkém těle

Tomáš Holčík | 16

Nový iPhone a další novinky Applu: sledujte, na co se zase budou stát fronty

Nový iPhone a další novinky Applu: sledujte, na co se zase budou stát fronty

** Apple dnes představuje nové produkty v čele s novými iPhony ** Nemusí zůstat jen u telefonů, čekají se i další novinky ** Úvodní přednáška začíná v 19:00 našeho času

David Polesný | 57


Aktuální číslo časopisu Computer

Jak vytvořit a spravovat vlastní web

Velký test herních klávesnic a DVB-T2 tunerů

Vše o formátu RAW

Vybíráme nejlepší základní desku