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, Print, Skript, Reset, Head, Metoda, Apache, HTML, Post, Split, Exit, Action

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


Aktuální číslo časopisu Computer

Test 6 odolných telefonů a 22 powerbank

Srovnání technologií QLED a OLED

Měřte své sportovní výkony

Sady pro chytrou domácnost