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, Linux, Programování, CGI, Metoda, Apache, Post, Exit, Reset, Split, Head, HTML, Print, Skript, Action


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

Porno insider: Jak virtuální realita vstupuje do filmů pro dospělé

Porno insider: Jak virtuální realita vstupuje do filmů pro dospělé

** Pornografie údajně představuje třetinu internetové obsahu a je technologický tahounem ** Do erotického obsahu postupně zasahuje i virtuální realita ** Kromě vizuálního vjemu se pracuje také na virtuálním uspokojení toho hmatového

Jan Dudek | 28

Google ADT-2: Miniaturní krabička s Android TV 8.0, kterou si nikdy nekoupíte

Google ADT-2: Miniaturní krabička s Android TV 8.0, kterou si nikdy nekoupíte

** Dlouho se nevědělo, co to přesně má být ** Pak se s krabičkou Google pochlubil na I/O ** Do „Chromecastu“ vtěsnal celý Android TV

Jakub Čížek | 24

Šmírovačka kamerami Googlu: Koukněte se, co nového zachytily na Street View

Šmírovačka kamerami Googlu: Koukněte se, co nového zachytily na Street View

Google stále fotí celý svět do své služby Street View. A novodobou zábavou je hledat v mapách Googlu vtipné záběry. Podívejte se na výběr nejlepších!

redakce | 44

Nechcete platit za Total Commander? Těmito bezplatnými programy ho můžete nahradit

Nechcete platit za Total Commander? Těmito bezplatnými programy ho můžete nahradit

** Total Commander je na Windows takřka legendou ** Licence však stojí více než tisíc korun ** Našli jsme pro vás deset alternativ dostupných zdarma

Karel Kilián | 140

Nová zbraň Microsoftu proti iPadu: Levný tablet Surface Go bude stát jen deset tisíc

Nová zbraň Microsoftu proti iPadu: Levný tablet Surface Go bude stát jen deset tisíc

** Microsoft představil nový tablet Surface Go ** Nový model zaujme nízkou cenou, ale schopnostmi zařízení Surface ** Microsoft nepoužil čip ARM, ale klasický procesor od Intelu 

Karel Javůrek | 116

Rekordy počasí: V Česku to ještě jde, skutečné extrémy zažívají jinde

Rekordy počasí: V Česku to ještě jde, skutečné extrémy zažívají jinde

** Teplotní extrémy dokážou překvapit. Seznamte se s rekordy v Česku i ve světě ** Rekordní hodnoty jsou mnohdy až k neuvěření ** Zjistěte, kdy ke bylo největší horko, zima, déšť či vítr

Karel Kilián | 7


Aktuální číslo časopisu Computer

Velký test 18 bezdrátových sluchátek

Vše o přechodu na DVB-T2

Procesory AMD opět porážejí Intel

7 NVMe M.2 SSD v přímém souboji