Etusivu
Tietokoneet
Elektroniikka
Autot
Webmasters
Download
Linkit
Palaute
Pelit
Sekalaista

eXTReMe Tracker

Yleistä

Aluksi sanottakoon, että tämä opas on vielä kesken. Tulevaisuudessa tulee lisää esimerkkejä ja joitakin muitakin asioita. Pyytäisin informoimaan oppaassa mahdollisesti olevista virheistä ja puuttuvista komennoista jne. esimerkiksi sähköpostilla tai palautelomakkeella. Oppaan teossa avustaneiden henkilöiden nimet voin pistää esille henkilön niin halutessaan.

Riippuu hyvin pitkälti palvelimesta, mitkä oppaassa esitellyistä komennoista toimivat. Tietoja on kerätty muunmuassa NCSA:n, Apachen ja BESTWWWD:n dokumentaatiosta. Ainakin tiedostokoon esitysmuodon määrittelyssä on poikkeavuuksia eri palvelimien välillä. Tässä oppaassa ei ole eritelty SSI:tä, XSSI:tä, ESSI:tä, SSIX:ää tai muitakaan SSI:n variaatioita, vaan ne ovat kaikki sikin sokin.


Mikä / mitä SSI on?

SSI on lyhenne sanoista Server Side Include. SSI:n avulla voidaan dokumenttiin liittää toisia tiedostoja ja tehdä dokumentista jollakin tavalla dynaaminen. Palvelin tulkkaa SSI-koodia sisältävän sivun ja lähettää sen vasta sitten käyttäjän selaimelle. SSI-komennot muotoillaan SGML-kommenteiksi, joten ne näyttävät tältä:

<!--#komento parametri="arvo" -->


SSI:n hyödyt ja haitat

Mitä hyötyä SSI:stä on?

  • Voit laittaa ladattavien tiedostojen koon näkymään automaattisesti, ettei tarvitse käsin muuttaa kokotietoa kun tiedoston koko muuttuu.
  • Voit tehdä automaattisen "Päivitetty viimeksi" -päivämäärän.
  • Voit liittää saman koodinpätkän helposti useammalle sivulle, esimerkiksi saman valikon kaikille sivuston sivuille eikä sinun tarvitse päivittää kuin yhtä tiedostoa päivittääksesi valikon kaikille sivuillesi.
  • Voit määritellä latautumaan eri selaimille eri sivun sekä muita ehdollisia toimintoja.
  • Voit helpottaa omaa ylläpitourakkaasi kun ei tarvitse tehdä samoja muutoksia moneen paikkaan ja koodi pysyy luettavampana.
  • Voit jopa nopeuttaa sivun latautumista tekemällä valintoja SSI:llä JavaScriptin sijaan.
  • Muut eivät pääse urkkimaan kaikkea dynaamista koodiasi, koska SSI muokkaa sivun koodia jo palvelimen päässä.
  • SSI ei ole millään tavalla riippuvainen selaimesta, joten yhteensopivuusongelmista ei tarvitse huolehtia.
  • Sekä paljon muuta...


Mitä haittaa SSI:stä on?

  • SSI kuormittaa palvelinta, koska palvelin joutuu "pureskelemaan" SSI-koodin ennen sivun lähettämistä selaimelle
  • Saattaa hidastaa hieman sivun latautumista
  • Sivua ei voi esikatsella lopullisessa muodossaan ennen palvelimelle siirtämistä (tämän takia minullakin on oma testipalvelin kotona)

Kuinka saan SSI:n käyttöön sivuillani?

Ensinnäkin palvelimesi täytyy tukea SSI:tä. Jos et ole varma, kysy palvelimen ylläpitäjältä.
Toiseksi sinun pitää vaihtaa kaikkien sivujen, jotka käyttävät SSI:tä päätteeksi .shtml. Kolmanneksi sinun pitää muokata kotisivusi juurihakemistossa olevaa .htaccess -tiedostoa (joissakin järjestelmissä .bhtaccess) eli lisätä siihen seuraavat rivit:

AddHandler server-parsed .shtml
AddType text/html shtml
Tai jos aivan välttämättä haluat säilyttää sivusi .htm -päätteisenä:

AddHandler server-parsed .shtml .html .htm
AddType text/html shtml
Joissakin järjestelmissä tämä ei toimi, mutta tiedoston oikeudet pitää määritellä esimerkiksi arvoon 775. Eli tämä vastaa unixien käskyä:

chmod 775 tiedosto.htm

...tai yleensäkin suoritusoikeuden (execute) antamista joko käyttäjälle (user) tai ryhmälle (group).

Tietoa tiedostoista

<!--#fsize file="tiedosto" -->

Tämä komento palauttaa määritellyn tiedoston koon. Tiedoston polku on riippuvainen dokumentin sijainnista. Tulostusta voi muotoilla jäljempänä esitetyllä tavalla.


<!--#fsize virtual="tiedosto" -->

Tämä komento palauttaa määritellyn tiedoston koon. Tiedoston polku on riippuvainen sivuston juurihakemistosta. Tulostusta voi muotoilla jäljempänä esitetyllä tavalla.


<!--#flastmod file="tiedosto" -->

Tämä komento palauttaa määritellyn tiedoston muutospäivämäärän. Tiedoston polku on riippuvainen dokumentin sijainnista. Tulostusta voi muotoilla jäljempänä esitetyllä tavalla.


<!--#flastmod virtual="tiedosto" -->

Tämä komento palauttaa määritellyn tiedoston muutospäivämäärän. Tiedoston polku on riippuvainen sivuston juurihakemistosta. Tulostusta voi muotoilla jäljempänä esitetyllä tavalla.


Pieni niksi:
<!--#flastmod virtual="/" -->

Palauttaa ajan, koska mitä tahansa sivuston sivua on päivitetty eli koska sivusto on viimeksi muuttunut.


Tiedostokoon määritteet

<!--#config sizefmt="määritteet" -->

Tällä komennolla voit määritellä missä muodossa tiedostojen koot annetaan. Taulukossa on esitelty mahdolliset määritteet. Hyväksytyt määritteet riippuvat palvelimesta.

b tai Bantaa koon tavuina
k tai Kantaa koon kilotavuina
m tai Mantaa koon megatavuina
abbrevantaa koon lyhennetyssä muodossa (78K, 3M, ...)
bytesantaa koon tavuina

 

Tiedostojen ajaminen

<!--#exec cgi="tiedosto" -->

Ajaa määritellyn CGI:n. Tiedoston polku on riippuvainen dokumentin sijainnista.


<!--#exec cmd="tiedosto" -->

Ajaa määritellyn komennon käyttäen Bourne Shell:iä.


Tiedostojen liittäminen

<!--#include file="tiedosto" -->

Liittää tiedoston dokumenttiin. Tiedoston polku on riippuvainen dokumentin sijainnista.


<!--#include virtual="tiedosto" -->

Liittää tiedoston dokumenttiin. Tiedoston polku on riippuvainen sivuston juurihakemistosta.


Laskurit

<!--#counter file="tiedosto" -->

Lisää laskurin arvoa yhdellä, tulostaa laskurin arvon ja kirjoittaa muuttuneen arvon tiedostoon.


<!--#counternp file="tiedosto" -->

Lisää laskurin arvoa yhdellä ja kirjoittaa muuttuneen arvon tiedostoon.


<!--#counterpo file="tiedosto" -->

Lisää laskurin arvoa yhdellä, tulostaa laskurin arvon muttei kirjoita muuttunutta arvoa tiedostoon.


<!--#daycnt file="tiedosto" -->

Päivälaskuri, joka nollautuu kerran vuorokaudessa.


<!--#totcnt file="tiedosto" -->

Kokonaislaskuri, laskee niin kauan, kunnes nollataan.


<!--#lastzero file="tiedosto" -->

Kertoo päivämäärän, milloin laskuri on nollattu viimeksi.


Muuttujat ja palvelimen ympäristömuuttujat

<!--#set var="muuttuja" value="arvo" -->

Määrittelee muuttujalle jonkin arvon, jonka voit esimerkiksi näyttää käyttämällä seuraavaa komentoa.


<!--#echo var="muuttuja" -->

Tämä komento palauttaa valitun palvelimen ympäristömuuttujan tai itse määritellyn muuttujan arvon. Muuttuja voi olla joku seuraavassa taulukossa mainituista.

MuuttujaMerkitys
ACCEPT_LANGUGEasiakkaan hyväksymät ihmiskielet
AUTH_TYPEasiakkaan tunnistusmenetelmä (jos käytössä)
BOGUS?
CONTENT_LENGTHasiakkaan lähettämän syötteen koko
CONTENT_TYPEsisällön MIME-tyyppi
DATE_GMTtämänhetkinen GMT-aika
DATE_LOCALtämänhetkinen paikallinen aika
DOCUMENT_NAMEdokumentin nimi
DOCUMENT_URIdokumentin URI
FORWARDEDproxyn nimi, jonka kautta dokumentti on kulkenut
FROMasiakkaan nimi (yleensä email osoite)
GATEWAY_INTERFACEpalvelimen CGI:n nimi ja versio
HTTP_ACCEPT_LANGUAGEasiakkaan hyväksymät ihmiskielet
HTTP_ACCEPTpilkulla erotettu lista selaimen tunnistamista MIME-tyypeistä
HTTP_CONNECTIONyhteystyyppi
HTTP_COOKIEasiakkaan lähettämän keksin tiedot
HTTP_REFERERreferrer URL
HTTP_UA_COLORasiakkaan näytön tyyppi (väri / mv) ja värisyvyys
HTTP_UA_CPUasiakkaan käyttämän prosessorin tyyppi
HTTP_UA_OSasiakkaan käyttämä käyttöjärjestelmä
HTTP_UA_PIXELSasiakkaan näytön resoluutio
HTTP_USER_AGENTasiakkaan selaimen nimi / tyyppi
HTTP_VIAproxyn nimi, jonka kautta dokumentti on kulkenut
HTTP_X_FORWARDED_FORasiakkaan todellinen IP-osoite
LAST_MODIFIEDdokumentin muutospäivämäärä
PAGE_COUNTdokumentin käyttökertojen lukumäärä
PATH_INFOlisäpolkutieto? koodattuna
PATH_TRANSLATEDlisäpolkutieto? koodaamattomana
QUERY_STRING_UNESCAPEDpalvelimelle osoitteen perässä lähetetty tieto koodaamattomana
QUERY_STRINGpalvelimelle osoitteen perässä lähetetty tieto koodattuna
RAW_COOKIEasiakkaan lähettämän keksin tiedot
REFERERreferrer URL
REMOTE_ADDRasiakkaan IP-osoite (numeerinen)
REMOTE_HOSTasiakkaan domain-nimi (DNS pitää olla päällä palvelimella)
REMOTE_IDENTkäyttäjän nimi, jos tuetaan RFC931 identifiointia
REMOTE_USERkäyttäjän ID, hyvin harvoin käytetty
REQUEST_METHODHTTP pyynnön tyyppi: GET / POST
SCRIPT_NAMEtällä hetkellä suoritettavan skriptin nimi
SERVER_ADMINpalvelimen ylläpitäjä (yleensä sähköpostiosoite)
SERVER_NAMEpalvelimen domain-nimi (esimerkiksi: www.mbnet.fi)
SERVER_PORThttpd:n käyttämä portti (yleensä 80)
SERVER_PROTOCOLpalvelimen käyttämä HTTP-protokollan versio
SERVER_SIGNATUREpalvelimen "allekirjoitus" (yleensä palvelinohjelmiston nimi)
SERVER_SOFTWAREpalvelinohjelmiston nimi (esimerkiksi: apache 1.2.5)
SERVER_URLweb-palvelimen nimi
TOTAL_HITSpalvelimen vastaanottamien sivuhakujen määrä
VIRTUAL_HOSTweb-palvelimen nimi

 

Päiväys ja kellonaika

<!--#echo var="DATE_LOCAL" -->

Tämä antaa tämänhetkisen päiväyksen ja kellonajan paikallista aikaa. Voit muokata esitysmuotoa jäljempänä esitetyllä tavalla.


<!--#echo var="DATE_GMT" -->

Tämä antaa tämänhetkisen päiväyksen ja kellonajan GMT-aikaa. Voit muokata esitysmuotoa jäljempänä esitetyllä tavalla.


<!--#echo var="LAST_MODIFIED" -->

Tämä antaa dokumentin päiväyksen ja kellonajan. Voit muokata esitysmuotoa jäljempänä esitetyllä tavalla.


Päiväyksen ja kellonajan muodon määritteet

<!--#config timefmt="määritteet" -->

Tällä komennolla voit määritellä missä muodossa päivämääräkäskyt antavat päiväyksen ja kellonajan. Muotoilumääritteitä on reilusti, joten halutun päivämäärämuodon muodostaminen on suhteellisen helppoa.

Määritteet voivat olla mitä tahansa yhdistelmiä oheisessa taulukossa olevia koodeja ja välimerkkejä, esimerkiksi: "%d.%m.%Y", joka määrittää päivämäärän muodossa 07.04.2001.

KoodiMerkitys
%%prosenttimerkki (%)
%aviikonpäivän lyhenne (Mon, Tue, Wed, ...)
%Aviikonpäivän koko nimi (Monday, Tuesday, ...)
%bkuukauden lyhenne (Jan, Feb, Mar, ...)
%Bkuukauden koko nimi (January, February, ...)
%cpaikallinen päivämäärän ja ajan esitysmuoto
%Coletuspäivämäärä- ja aikamuoto
%dkuukauden päivä (01..31)
%Dpäivämäärä muodossa %m/%d/%y
%ekuukauden päivä (1..31) 1..9 eteen lisätään välilyönti
%hkuukauden lyhenne (sama kuin %b)
%Htunnit 24h muodossa (00..23)
%Itunnit 12h muodossa (01..12)
%jvuoden päivä (001..366)
%mkuukausi (01..12)
%Mminuutit (00..59)
%nrivinvaihtokoodi
%pteksti: AM tai PM
%raika muodossa %I:%M:%S %p
%Raika muodossa %H:%M
%Ssekunnit (00..61)
%ttabulaattorin koodi
%Taika muodossa %H:%M:%S
%Uviikon numero, viikon ensimmäinen päivä on sunnuntai (00..53)
%wviikonpäivän numero (sunnuntai=0, maanantai=1, ...)
%Wviikon numero, viikon ensimmäinen päivä on maanantai (00..53)
%xmaakohtainen päivämäärämuoto
%Xmaakohtainen aikamuoto
%yvuosiluku kahdella numerolla (00..99)
%Yvuosiluku nelinumeroisena (1999, 2000, 2001, ...)
%Zaikavyöhykkeen nimi

 

Ehtolauseet

<!--#if expr="vertailulauseke" -->
<!--#elif expr="vertailulauseke" --> tai
<!--#elsif expr="vertailulauseke" -->
<!--#else -->
<!--#endif -->

Vertailulauseke voi olla:

  • muuttuja tai ympäristömuuttuja, tosi jos muuttuja ei ole tyhjä
  • muuttujan vertailu toiseen muuttujaan tai merkkijonoon

Vertailussa voi käyttää säännönmukaisia ilmaisuja (regexp). Huom! Muuttujien arvot ovat aina merkkijonoja, joten esimerkiksi 7 on suurempi kuin 10.


Esimerkki:

<!--#if expr="$REMOTE_HOST=/.fi$/" -->
Suomi
<!--#elif expr="$REMOTE_HOST=/.se$/" -->
Ruotsi
<!--#elif expr="($REMOTE_HOST=/.gov$/) || ($REMOTE_HOST=/.mil$/)" -->
USA:n hallinto tai armeija
<!--#else -->
Joku muu
<!--#endif -->

Esimerkissä on käytetty regexp:iä. Haettava merkkijono on kauttaviivojen (/) välissä ja dollarinmerkki ($) tarkoittaa merkkijonon loppua. Kaksi pystytolppaa (||) tarkoittavat TAI-operaattoria. Esimerkki kertoo, mistä päin vierailija tulee. Muuttujan nimen edessä oleva dollarinmerkki taasen ilmoittaa, että kyseessä on muuttuja.

Muita merkkejä mitä ehtolauseessa voi käyttää on esimerkiksi kenoviiva (\), joka tarkoittaa, että seuraavaa merkkiä ei käsitellä erikois- tai ohjausmerkkinä. Esimerkiksi \$ tulkittaisiin $.


Vertailuoperaattorit

=sama, yhtä suuri
!=eri, erisuuri
<pienempi
>suurempi
<=pienempi tai yhtä suuri
=>suurempi tai yhtä suuri
!ei ole (not)
&&ja (and)
||tai (or)

 

Virhetilanteet

<!--#config errmsg="viesti" -->

Tällä komennolla voit muuttaa palvelinvirheen sattuessa näytettävää virheilmoitusta. Normaali virheilmoitus on "[An error has occured during processing this directive]" tai jotakin sinne päin. Virheilmoitus kirjautuu myös palvelimen lokiin.

Yleensä oma virheilmoitus palautuu ensimmäisen virheen sattuessa alkuperäiseen muotoonsa, joten jos sivulla sattuu olemaan useampia virheitä, vain ensimmäisen kohdalla tulostuu itse määritelty virheilmoitus


Muita komentoja

<!--#printenv -->

Palauttaa listan palvelimen ympäristömuuttujista ja niiden arvoista.


<!--#append file="users.txt" line="&&name&&,&&strt&&,&&city&&" -->

Kirjoittaa tiedostoon users.txt rivin, jossa on name-, strt- ja city -muuttujien arvot pilkulla erotettuna.


Esimerkkejä

Esimerkki: Ja edellinen sivu oli...

Esimerkki kirjoittaa sivulle mistä vierailija päätyi tälle sivulle.
<!--#if expr="${HTTP_REFERER} =/http/" -->
     <B>You came from <!--#echo var="HTTP_REFERER"--></B>
    <!--#else -->
      <B>I don't know where you came from</B>
  <!--#endif -->


Esimerkki: Takaisin -linkki / nappi

Esimerkki tekee Takaisin -linkin tai vähän muunneltuna Takaisin -napin.
<A HREF="<!--#echo var="HTTP_REFERER"-->">BACK</A>


Esimerkki: Selaimen tunnistaminen

Esimerkki liittää selaimen perusteella kyseiselle selaimelle tehdyn sivun.
<!--#if expr="${HTTP_USER_AGENT} = /WebTV/" -->
 <!--#set var="brtype" value="webtv" -->
 <!--#elif expr="${HTTP_USER_AGENT} = /MSIE 5/" -->
  <!--#set var="brtype" value="msie5" -->
 <!--#elif expr="${HTTP_USER_AGENT} = /MSIE 4/" -->
  <!--#set var="brtype" value="msie4" -->
  <!--#elif expr="${HTTP_USER_AGENT} = /MSIE 3/" -->
   <!--#set var="brtype" value="msie3" -->
   <!--#elif expr="${HTTP_USER_AGENT} = /MSIE 2/" -->
    <!--#set var="brtype" value="msie2" -->
    <!--#elif expr="${HTTP_USER_AGENT} = /Mozilla\/4/ && $brtype !=/msie/" -->
     <!--#set var="brtype" value="netscape4" -->
     <!--#elif expr="${HTTP_USER_AGENT} = /Mozilla\/3/ && $brtype !=/msie/" -->
      <!--#set var="brtype" value="netscape3" -->
      <!--#elif expr="${HTTP_USER_AGENT} = /Mozilla\/2/ && $brtype !=/msie/" -->
       <!--#set var="brtype" value="netscape3" -->
      <!--#elif expr="${HTTP_USER_AGENT} = /Mozilla\/1/ && $brtype !=/msie/" -->
       <!--#set var="brtype" value="netscape2" -->
    <!--#else -->
     <!--#set var="brtype" value="unknown" -->
<!--#endif -->
<P>
<!--#include file="$brtype.txt"-->


Esimerkki: Taustakuva selaimen mukaan

Esimerkki laittaa eri taustakuvan selaimen perusteella. Itse selaimen tunnistus käy ilmi edellisestä esimerkistä.
<!--#if expr="$brtype = /msie/" -->
  <BODY BACKGROUND="I-Love-MS.gif">
  <!--#elif expr="$brtype = /netscape/" -->
    <BODY BACKGROUND="I-Love-Netscape.gif">
  <!--#else -->
    <BODY BACKGROUND="Get_a_Browser.gif">
<!--#endif -->


Esimerkki: Liitä eri tiedosto domaintyypin mukaan

Esimerkki liittää eri tiedoston sivun koodiin domaintyypin perusteella.
<!--#if expr="\"$REMOTE_HOST\" = /.*com/" -->
 <!--#include virtual="com.html" -->
<!--#elif expr="\"$REMOTE_HOST\" = /.*org/" -->
 <!--#include virtual="org.html" -->
<!--#elif expr="\"$REMOTE_HOST\" = /.*edu/" -->
 <!--#include virtual="edu.html" -->
<!--#else -->
 <!--#include virtual="else.html" -->
<!--#endif -->
  © 2002-2017 Juha Levänen  -=-  Käyttöehdot