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, Info, Skript, Reklamní odkaz, Print, Split, TeX, Kody


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

Photolemur 3: Prostě do něj přetáhnete fotky a začne se dít magie. Tedy údajně...

Photolemur 3: Prostě do něj přetáhnete fotky a začne se dít magie. Tedy údajně...

** Je lepší nabušený Photoshop, nebo program s jedním tlačítkem? ** Photolemur si myslí to druhé ** Tento fotoeditor neumí skoro nic, a přitom (skoro) všechno

Jakub Čížek | 23

10 nejtragičtějších leteckých nehod od roku 2000. Jedna je stále záhadou

10 nejtragičtějších leteckých nehod od roku 2000. Jedna je stále záhadou

** Letecká doprava patří k nejbezpečnějším způsobům cestování ** Čerstvá aféra s Boeingy Max důvěru v bezpečnost létání narušila ** Připomeňme si největší nedávné letecké nehody. Každá ale přispěje k bezpečnosti dalších letů

Karel Kilián | 33

Vyzkoušeli jsme eObčanku a přihlásili se s ní na weby úřadů. Vážně to funguje!

Vyzkoušeli jsme eObčanku a přihlásili se s ní na weby úřadů. Vážně to funguje!

** Máme eObčanku, máme čtečku, vyzkoušeli jsme přihlášení na weby úřadů. ** Objevily se drobné problémy, podařilo se nám je vyřešit. ** Používání eObčanky pro online identifikaci je velmi pohodlné.

Marek Lutonský | 37

Galerie: Srovnali jsme estetický Linux a Windows 10. Který z desktopů je hezčí?

Galerie: Srovnali jsme estetický Linux a Windows 10. Který z desktopů je hezčí?

** Linuxový Elementary OS se inspiruje v Apple macOS ** Microsoft Windows 10 jde vlastní cestou ** Který z desktopů je hezčí? Prohlédněte si galerii

Jakub Čížek | 117



Aktuální číslo časopisu Computer

Velký test fotolabů

Oklamali jsme rozpoznání obličeje

13 tipů pro rychlejší Wi-Fi

Test NVMe SSD 500 GB