Apache a CGI skripty - data z textového souboru

Dnes si povíme, jak natáhnout data z obyčejného textového souboru a vytažená data z TXT souboru upravit v HTML souboru.
Dnes si povíme, jak natáhnout data z obyčejného textového souboru a vytažená data z TXT souboru upravit v HTML souboru.

Formát textového souboru
První, co musíme udělat, je naplánovat si tvar textového souboru (v našem případě to bude soubor info.txt, který si uložíme mimo adresář typu DOCUMENT_ROOT), odkud budeme data tahat. Skriptem načteme každý řádek ze souboru zvlášť, ale na jednom řádku budeme mít X údajů jako je titulek, popis, URL odkaz, a jiné věci. Abychom mohli toto rozlišit, potřebujeme si určit nějaký oddělovač(--), kterým řekneme, kde jaká sekce začíní (titulek, popis, URL odkaz, …), a kde končí.

Do proměnné $InfoSoubor načteme řádek po řádku a pomocí oddělovače "--" tak získáme jednotlivé sekce (sloupce), v našem případě to jsou rok, měsíc, den, url odkaz, titulek a popis. Pokud tedy napíšeme @Info, pak z řádku získáme hodnotu roku, atd. (viz tabulka)

@Info = split (/--/, $InfoSoubor);

vzor řádku TXT souboru:

ROK--MESIC--DEN--URL_ODKAZ--TITULEK--POPIS

příklad řádku TXT souboru:

1999--01--20--http://www.urlodkaz1.cz--titulek1--popis k titulku 1

HTML kód
Nyní si musíme říct, jak výstup z CGI skriptu chceme formátovat. Řekněme si, že chceme, aby výstup ze skriptu vypadal například takto:

<FONT FACE=Arial SIZE=+1><B> <A HREF="URL_ODKAZ">TITULEK</A> </B></FONT><BR>
  <FONT FACE=Arial SIZE=-1><I>POPIS</I></FONT><BR>
  <FONT FACE=Arial SIZE=-2> [ Datum zverejneni: DEN.MESIC.ROK ] </FONT><P>
  

  
CGI skript s popisem
CGI skript uložte do C:/Program Files/Apache Group/Apache/cgi-bin/cgi6.cgi ($HOME/apache/share/cgi-bin/cgi6.cgi) , z pohledu serveru je to adresář http://localhost/cgi-bin/cgi6.cgi


  

#!/perl/bin/perl.exe
  # zde vložte část kodu CGI skriptu cgi5.cgi
  # označené jako POPIS1 az POPIS3 z prechazejiciho
  # clanku, Apache a CGI skripty V - metoda GET
  print "Content-type: text/html\n\n";
  print "<HTML><HEAD>";
  print "<TITLE>CGI 6: clanek $promena{'dalsi'} az $promena{'další'} + 10</TITLE>";
  print "</HEAD><BODY BGCOLOR=#FFFFFF>";
  
   # otevreni TXT souboru
   open (INFO_SOUBOR, "../dbase/info.txt");
   # nastavení proměné pro aktualní hodnotu +10
   $dalsich10 = $promena{'dalsi'} +10;
   # od jakého řádku se mají odkazy (clanky) zobrazovat
   $cislo_radek10 = $promena{'dalsi'};
   $cislo_radek = 0;
   # Načtení souboru od začátku do konce po řádcích
   while ($InfoSoubor = <INFO_SOUBOR>) {
   # Zobrazí se pouze ty řádku, které vyhovují podmínce
   if (($cislo_radek < $dalsich10) && ($cislo_radek >= $promena{'dalsi'})) {
   # rozdělení řádku po sloupcích podle oddělovače --
   @Info = split (/--/, $InfoSoubor);
   print "<FONT FACE=Arial SIZE=+1><B> ";
   print " <A HREF=\"$Info[3]\">$Info[4]</A> </B></FONT><BR>";
   print "<FONT FACE=Arial SIZE=-1><I> $Info[5] </I></FONT><BR>";
   print "<FONT FACE=Arial SIZE=-2> [ Datum zverejneni: ";
   print " $Info[2].$Info[1].$Info[0] ";
   print " ] </FONT><P>\n";
   # konec podmínky if
   }
   # připočítání jedničky k proměným, které zajištují
   # zobrazení data do HTML stránky
   ++$cislo_radek;
   ++$cislo_radek10;
   # konec cyklu while
   }
   # uzavření souboru s identifikátorem INFO_SOUBOR
   close (INFO_SOUBOR);
  
  # odkaz pro dalších 10 článků (odkazů)
  print "<A HREF=/cgi-bin/info.cgi?dalsi=$dalsich10>dalsi 10 clanku</A>";
  
  # konec CGI skriptu
  exit;
  

  
  Příště si ukážeme, jak vytvořit jednoduchý reklamní banner a zápis údajů o uživateli, který na reklamní banner kliknul. Pokud máte jakékoliv dotazy či připomínky, zasílejte jej na adresu erik@email.cz
  
Váš názor Další článek: @Home koupí Excite za 6,7 miliardy dolarů

Témata článku: Software, Programování, CGI, Print, Kody, TeX, Info, Skript, Reklamní odkaz, Split

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


Aktuální číslo časopisu Computer

Jak rychlé je nabíjení bez drátů?

Test 11 sluchátek pro hráče

Aplikace, které vám zachrání dovolenou

Kompletní přehled datových tarifů