Basisprincipes van Server Side Inclusief of SSI-technologie

Wat is er gebeurd ssi en waar eet je het bij?

Serverzijde opnemen (SSI) Dit aspect van WWW-ontwerp is uiterst noodzakelijk en nuttig, omdat het het werk van het maken en onderhouden van een website enorm vergemakkelijkt.

Server Side Include wordt vanuit het Engels vertaald als ‘included on the server side’. Met deze technologie kan de webserver elke andere tekst in de tekst van uw HTML-pagina’s opnemen: de inhoud van tekstbestanden of bijvoorbeeld het resultaat van CGI-scripts. (die, zoals u weet, meestal is opgemaakt als HTML-tekst). Dit ‘inschakelen’ gebeurt onmiddellijk voordat de tekst van de HTML-pagina naar de browser van de gebruiker wordt verzonden, zodat de paginabezoeker niet eens op de hoogte is van dit server-‘gedoe’.

Wat is het voordeel van SSI? De voordelen zijn enorm. Laten we aannemen dat u op elke pagina van uw site een lijst met beschikbare secties van de site heeft geplaatst. Je creatie, zoals het hoort, evolueert voortdurend, en daarom heb je besloten om nog een sectie toe te voegen. Wat nu, alle pagina's in de editor openen en domweg hetzelfde aan de tekst toevoegen? Een Sovjetpionier (die van uitdagingen houdt) zou precies dat doen, en een slimme webontwerper zal dat ook doen gebruik SSI. Om dit te doen, maakt u gewoon een apart tekstbestand (bijvoorbeeld menu.html) en voegt u daar de HTML-code voor de lijst met secties toe. Rechtstreeks op de sitepagina's, op de plaats waar de lijst met secties zich zou moeten bevinden, moet u invoegen de volgende instructies:
Houd er rekening mee dat u de syntaxis van SSI-richtlijnen naar de letter moet volgen. Als u bijvoorbeeld vergeet twee streepjes aan het einde van een richtlijn te plaatsen, zal de server er letterlijk in stikken, waardoor het parseren van de pagina stopt.

Wanneer iemand deze pagina wil bekijken, zal de server de instructie vervangen<#include>de inhoud van het menu.html-bestand. Als u het menu.html-bestand wijzigt, worden alle pagina's waar u gebruik van maakt, weergegeven<#include>, wordt automatisch bijgewerkt. Let op: er verandert niets in de HTML-bestanden die zich op de schijf van de webserver bevinden - de server voegt onmiddellijk tekst in voordat de WWW-pagina naar de browser van de bezoeker wordt verzonden.

In plaats van een gewone naam tekstbestand in de instructies<#include>u kunt de naam van het CGI-script opgeven. In dit geval zal de server eerst het CGI-script uitvoeren en vervolgens het resultaat van het script in de tekst van de WWW-pagina invoegen. Dit betekent dat je zaken kunt implementeren zoals bijvoorbeeld tekst teller bezoeken of het weergeven van een willekeurig geselecteerde zin op de pagina.

Er is nog een indirect voordeel van het gebruik van SSI: door het gebruik van sjablonen zoals het eerder genoemde menu.html worden WWW-pagina's kleiner van formaat en kunt u veel tijd besparen door bestanden via FTP naar de webserver over te zetten.

Maar niet alles is zo geweldig. U kunt bijvoorbeeld niet met SSI experimenteren op een machine waarop geen webserver is geïnstalleerd. De werking van SSI wordt verzekerd door de server, dus bij het bekijken van HTML-bestanden vanaf de lokale harde schijf(bijvoorbeeld C:), negeert uw browser SSI-richtlijnen - vanuit HTML-oogpunt gezien zijn het immers gewone opmerkingen.

Bovendien moet de server worden geconfigureerd om SSI te ondersteunen. En je komt zulke hebzuchtige aanbieders tegen die geld beginnen te eisen voor zo'n opzet. Het is het beste om hun diensten niet te gebruiken, aangezien SSI-ondersteuning wordt ingeschakeld door een paar regels aan de configuratiebestanden toe te voegen Apache-webserver en enkele andere eenvoudige acties van de beheerder, waarvoor het aannemen van geld naar mijn mening een zonde is.

Gelukkig zijn er niet veel van dit soort aanbieders. De meeste bieden standaard SSI-ondersteuning. Maar houd daar rekening mee gratis servers, zoals Hoom, Tripod, Geocities, Chat.ru SSI is niet toegestaan. Je kunt er niets aan doen :-(

Over serverinstellingen gesproken. Wanneer SSI-ondersteuning is ingeschakeld, begint de server alle pagina's te scannen op de aanwezigheid van SSI-richtlijnen, waardoor de belasting van de server toeneemt. Daarom heel vaak systeembeheerders schakel SSI alleen in voor bestanden met een specifieke extensie - meestal .shtml. Dus als SSI niet werkt in .html-bestanden, probeer ze dan te hernoemen naar .shtml, of beter nog, vraag ernaar bij je systeembeheerder :-)

Over het algemeen is SSI dat inderdaad handig hulpmiddel, wat niet de moeite waard is om te negeren als u waarde hecht aan uw tijd (en geld).

Wat is SSI en waarmee wordt het gegeten II

Met dit artikel wil ik een nieuwe subsectie openen over de DVK URL CLUB. "Uw Column" is bedoeld om materiaal en meningen van onze bezoekers te verzamelen. Het eerste artikel is geschreven door onze moderator van de sectie “Smoke Break” gebaseerd op een van de onderwerpen over “Smoke Break”, waarin Alexander enkele kenmerken van het gebruik van SSI-richtlijnen uitlegt. De auteur wil u er ook aan herinneren dat SSI-instructies alleen kunnen worden gebruikt op een server die deze ondersteunt. Meerderheid gratis hosting het netwerk beschikt niet over een dergelijke functie, maar ondersteunt eenvoudigweg geen SSI.

Preambule
De essentie en eenvoudigste technieken van SSI zijn al op deze site beschreven. In de regel vind je zelden iets anders dan een beschrijving van de enkele "include" -functie in zijn eenvoudigste vorm op de pagina's met artikelen over mastering.

SSI kan echter gerust een programmeertaal worden genoemd, zij het niet een volwaardige taal, maar een taal. Met SSI kunt u voorwaarden en variabelen definiëren en kunt u ook werken met zogenaamde omgevingsvariabelen, waarvan er één $QUERY_STRING is, die actief wordt gebruikt bij het programmeren in Perl, PHP en andere serverscripttalen. Dit is waar het plezier begint.

De essentie van het fenomeen of het resultaat dat de Webmaster heeft.
Over het algemeen zullen we het nu over sjablonen hebben. Bij volgende update de persoon die de site onderhoudt hoeft alleen maar een link naar een nieuwe pagina in de inhoudsopgave toe te voegen en een bestand te maken met platte tekst zonder enige opmaak. Mee eens dat dit erg handig is :)

Technologie: voorwaardelijke richtlijnen en de omgevingsvariabele $QUERY_STRING.
Over het algemeen is er een soort index.shtml-sjabloon, namelijk de volgende:

:: Titel, verdomme::



...Coole tags en coole graphics...

Hier zouden er in principe geen problemen moeten zijn met het begrip, maar hier komt het meest interessante deel. Laat me uitleggen dat de waarde van de variabele $QUERY_STRING wordt bepaald door de inhoud van de querytekenreeks na het teken "?" http://maste.ru/razdel/index.shtml?page1.
tweede en belangrijkste onderdeel:



Ik denk dat er een transcriptie nodig is. We hebben vijf richtlijnen, waarvan er drie voorwaardelijk zijn, en twee reguliere opnames:
De inhoud van de queryreeks wordt gecontroleerd op de aanwezigheid van de constructie "?iets" en of positief resultaat de tweede richtlijn wordt uitgevoerd.
Een bestand met een naam die identiek is aan de inhoud van de regel is verbonden, bijvoorbeeld als de queryregel er als volgt uitziet: “http://maste.ru/razdel/index.shtml?page1”, dan het bestand “page1. txt” is verbonden en bevindt zich in dezelfde map als indexbestand.
Wordt uitgevoerd als er geen inhoud zoals "?something" in de regel staat en de URL er als volgt uitziet: "http://maste.ru/razdel/index.shtml" of als volgt: "http://maste.ru/ razdel/ ", en gaat verder met het uitvoeren van de vierde richtlijn.
Het standaardbestand is inbegrepen, dat meestal de inhoudsopgave van de sectie bevat, d.w.z. links naar sectiebestanden, die er als volgt uit zouden moeten zien: link naar pagina nr. 1, enz.
Voltooiing van de toestand.
Vervolgens komt het onderste deel van de html-code:
... nog wat coole tags en coole graphics...




Hoe zal het werken?
De volgende bestanden worden in de map gedumpt:
index.shtml (terminaltype);
default.txt (lijst met links pagina 1 en te de en te pe en hatetepe:);
bestanden pagina1.txt, ..., pagina571756.txt totdat je er genoeg van hebt (in principe kan de naam van alles zijn, het belangrijkste is dat deze overeenkomt met de inhoud na “?” in de overeenkomstige link).
Als u van plan bent SSI-richtlijnen in gewone bestanden te gebruiken, is het beter om ze op dezelfde manier te doen.shtm, .shtml, en vergeet niet de extensies in de code van het index.shtml-bestand te corrigeren.

Hier! Gebruik het voor uw gezondheid :)


Bijna elke niet-professionele website begint zijn bestaan ​​als verschillende HTML-documenten die met elkaar zijn verbonden door kruisverwijzingen. In deze staat gaan veel mensen de eeuwigheid van informatie in. Maar sommige amateursites worden nog steeds populair, krijgen meer informatie-inhoud en nemen in volume toe. Soms groeien ze uit tot tientallen of zelfs honderden pagina's. Maar in wezen blijven het een reeks documenten die voor eens en voor altijd zijn gevormd.

Het onderhouden en bijwerken van een dergelijke site is een echte kwelling voor de eigenaar. Een pagina bestaat in de regel uit verschillende blokken, en sommige daarvan blijven ongewijzigd voor alle pagina's van de site. Dit is de titel navigatiemenu, reclame blok, paginavoettekst. Als u iets wilt wijzigen in een van deze permanente blokken, moet u dit op elke pagina van de site handmatig doen. Het plezier is zeer twijfelachtig. Vaak interessante ideeën blijven ongerealiseerd juist vanwege de grote hoeveelheid montage van tientallen individuele pagina's. SSI maakt deze taak veel eenvoudiger. Bovendien kunt u met de SSI-technologie iets anders doen dat fundamenteel onmogelijk is met behulp van HTML. Het gebruik van SSI is eenvoudig, hoewel kennis HTML-taal zal veel helpen. Als je niet bang bent, ga je gang!

Laten we eerst de afkorting SSI - Server Side Inclusief ontcijferen. In het Russisch: ‘insluitsels aan de serverzijde’. Is alles duidelijk? Dan laten we het daarbij... Hoewel het beter is om het uit te leggen. SSI zijn richtlijnen die in HTML-code zijn ingevoegd en die de webserver besturen. Wanneer dergelijke SSI-inserts in een bestand worden aangetroffen, voert de webserver bepaalde acties uit. U kunt bijvoorbeeld HTML-code uit een ander bestand toevoegen, pagina's direct genereren, afhankelijk van het browsertype, en nog veel meer.

Om ervoor te zorgen dat de server weet dat een pagina SSI-inserts bevat, moet deze een speciale extensie hebben: *.shtml of *.shtm, hoewel dit wordt bepaald door de serverconfiguratie. Meestal wordt *.shtml gebruikt. Dat de server SSI ondersteunt, wordt meestal aangegeven in de hosting- of tariefbeschrijving. Maar het kan geen kwaad om het te controleren. Om dit te doen, zullen we eerst twee bestanden maken. shtml en tweede.html. Eerst in het bestand. shtml kopieer zes regels:

laquo;-//W3C//DTD HTML 4.01 Transitional//EN">

In het bestand tweede. html schrijven we slechts één regel:

Werken!

Laten we nu deze pagina's naar de server uploaden en ernaar schrijven adresbalk browser "www.uw_site/eerste.shtml". Als de server SSI ondersteunt, zien we na het openen van het bestand het bericht "Werkt!" Als er in plaats daarvan staat: ook gefeliciteerd! SSI werkt, maar de SSI-invoeging kan niet worden verwerkt. U kunt bijvoorbeeld in de code invoegen extra ruimtes of geef de bestanden een andere naam. Hoogstwaarschijnlijk draait de server een Unix-systeem, en daarvoor tweede. html en tweede. html - twee grote verschillen.

Als er helemaal niets wordt weergegeven, maar SSI-ondersteuning wordt aangegeven, kunt u het gemakkelijkst contact opnemen met de service technische ondersteuning. Misschien wordt er iets anders gebruikt in plaats van de *.shtml-extensie, of moet SSI expliciet worden toegestaan ​​in de site-instellingen. Hostingspecialisten zullen je in ieder geval proberen te helpen.

Hoe kan SSI helpen met website-onderhoud? De belangrijkste delicatesse is als volgt. We kunnen elk fragment dat op meerdere pagina's op de server wordt herhaald, in één kopie opslaan! Om dit te doen, plaatsen we dit fragment in een apart bestand, bijvoorbeeld fragment.html. Dit bestand is niet nodig,

En andere attributen van een “volwaardig” html-document. Er zou slechts een fragment van de code zelf moeten zijn, dat vervolgens op zijn plaats wordt ingevoegd.

Nu schrijven we overal op elke pagina van de site waar dit fragment nodig is een SSI-insert:

Het bestand moet zich in dezelfde map bevinden als het hoofdbestand. Als u alle invoegbestanden in een aparte map wilt plaatsen, moet u een ander commando gebruiken dat dit specificeert volledige pad naar het relatieve fragmentbestand huidige map:

In het hoofdbestand kunt u dus alleen het 'skelet' van de pagina achterlaten, bijvoorbeeld een wireframe-tabel en de hoofdtekst, en alle permanente blokken toevoegen via SSI-inserts. De volledige pagina wordt “on the fly” door de webserver gegenereerd, alsof het uit afzonderlijke stenen bestaat. De gebruiker ontvangt echter een bericht op de computer volledige pagina, zonder het minste teken van SSI-gebruik. Als je iets in een fragment wijzigt, verschijnt het automatisch op alle pagina’s waar het wordt gebruikt.

Denk je nog steeds na? Dan zullen we, speciaal voor jou, in dit artikel naar zulke goodies kijken dat er geen twijfel bestaat over het gebruik van SSI.

SSI (Server Side Inclusief) is een technologie waarmee u webpagina's gemakkelijk uit onderdelen kunt "samenstellen", de resultaten van het uitvoeren van CGI-scripts erin kunt invoegen en andere dynamische elementen aan de pagina's kunt toevoegen.

Welke bestanden worden verwerkt als SSI, hoe u uw bestanden kunt toevoegen

Standaard controleert de webserver alleen bestanden met de extensie *.shtml op SSI-instructies.

Zet bijvoorbeeld de SSI-opdrachten in het bestand index.shtml en het werkt direct. Als het nodig is om andere bestanden te controleren op de aanwezigheid van SSI, kunnen de bijbehorende extensies ter controle worden toegevoegd door de volgende instructie in het .htaccess-bestand te plaatsen:

AddHandler server-geparseerd .ext1.ext1

hier is de extensie van bestanden die moeten worden gecontroleerd op de aanwezigheid van SSI. Het wordt niet aanbevolen om de .html- en .htm-extensies toe te voegen, omdat in dit geval de server alle html-bestanden zal controleren op de aanwezigheid van SSI-inserts. Dit kan leiden tot een volkomen zinloze belasting van de server.

Beperkingen

Alle SSI-richtlijnen zijn beschikbaar voor hostinggebruikers, met uitzondering van één beperking voor abonnees die een tarief gebruiken dat niet voorziet in het uitvoeren van hun eigen CGI-scripts. Voor deze clients is het uitvoeren van scripts ook niet beschikbaar via SSI-instructies. Dat wil zeggen, in Apache-termen is de NoExec-optie op hen van toepassing.

Hoe werkt SSI en waarvoor wordt het gebruikt?

Beginnende gebruikers kunnen SSI-technologie hoofdzakelijk voor twee doeleinden gebruiken: een pagina uit delen van de html-code aan elkaar lijmen en scripts uitvoeren om de resultaten van hun werk op de gemaakte html-pagina te plaatsen. In het eerste geval worden de overeenkomstige bestanden van de serverschijf gelezen en ingevoegd in de code van de pagina van waaruit de SSI-code werd aangeroepen. In het tweede geval voert de webserver, nadat hij de SSI-instructie heeft gevonden, een script uit dat zich op de schijf bevindt en voegt het resultaat van het script in de laatste pagina in.

    Laten we het eens nader bekijken: Een pagina “aan elkaar lijmen” uit delen van html-code.

    Het wordt gebruikt om te voorkomen dat dezelfde html-code op meerdere webpagina's wordt gedupliceerd. U kunt bijvoorbeeld het volledige ontwerp opnemen in SSI-insluitsels, die zijn opgenomen in een specifiek HTML-bestand, dat alleen de tekst van een specifieke pagina bevat. Laten we de “header” van de webpagina (ontwerpelementen, menu, en andere elementen die op alle pagina's aanwezig zijn), en in het footer.inc-bestand plaatsen we het onderste deel van de webpagina (het laatste deel van het ontwerp). Laten we vervolgens een bestand maken met de naam index.shtml, dat er als volgt uit zal zien:

    En hier hebben we de hoofdtekst van de pagina;

    Er wordt van uitgegaan dat we html-code in de opnamebestanden hebben geplaatst, in ieder geval als start-/eindtags , , enzovoort. Als gevolg hiervan ontvangt de gebruiker een pagina die eerst de inhoud van het header.inc-bestand bevat, vervolgens de woorden "En hier hebben we de hoofdtekst van de pagina" en vervolgens de inhoud van het footer.inc-bestand.

    Dit gebruik van SSI is handig omdat u niet voortdurend opnieuw hoeft in te brengen aangemaakte pagina's dezelfde html-code, en ook vanuit het oogpunt van het gemak van het wijzigen van de belangrijkste elementen van de site - we veranderen de html-code op één plek, die onmiddellijk verandert op alle pagina's van de site.

    Scripts uitvoeren en de resultaten van hun werk op de gemaakte html-pagina plaatsen. Zo kunt u vrijwel elke functionaliteit op de pagina plaatsen, bijvoorbeeld in Perl (of een andere programmeertaal die door de hosting wordt ondersteund).

    U heeft bijvoorbeeld een scriptteller die laat zien hoeveel bezoekers uw pagina hebben bezocht en waar deze zich bevindt /cgi-bin/count.pl. Laten we het resultaat van zijn werk opnemen in een webpagina. Hiervoor plaatsen we de volgende SSI-code in de code van de html-pagina:

    Hierdoor wordt de teller die het script weergeeft op de pagina geplaatst die de gebruiker ziet /cgi-bin/count.pl.

    Volledige lijst U vindt SSI-opdrachten in de beschrijving van de Apache-module mod_include

Meer voorbeelden van het gebruik van SSI

SSI-instructies kunnen voor meer worden gebruikt dan alleen het uitvoeren van scripts en het opnemen van bestanden. Met SSI kunt u ook werken met omgevingsvariabelen voor webservers, datums manipuleren, opdrachten uitvoeren op basis van voorwaarden, enzovoort. Goede beschrijving De meest populaire toepassingen van SSI-opdrachten vindt u op de CIT Forum-server.

Diagnose van fouten bij het gebruik van SSI

Als u bij het gebruik van SSI-opdrachten op uw HTML-pagina's de melding "" ziet, betekent dit dat er een fout is opgetreden bij het verwerken van de SSI-instructie door de webserver.

Mogelijke redenen het optreden van een dergelijke fout.

#inclusief virtueel zoals #include file bevat de tekst van een ander bestand huidige bestand of voer cgi-script uit. In tegenstelling tot #include kan het bestand relatieve of absoluut pad zonder een protocolnaam (HTTP://) en een domeinnaam (site) kan het dus niet verwijzen naar een bestand op een andere site (PHP wordt gebruikt om bestanden van een andere site te exporteren).

De richtlijn staat paden toe zoals:

example/_ssi.html verwijst naar het bestand _ssi.html, dat zich in de voorbeeldsubmap van de huidige map bevindt.

../_ssi.html verwijst naar het bestand _ssi.html dat zich bevindt in de map waarin het huidige bestand is genest (bovenliggend bestand).

/_ssi.html verwijst naar het bestand _ssi.html dat zich in de hoofdmap van de site bevindt (voor dit bestand http://site/_ssi.html).

Bijvoorbeeld:

#fsize-bestand Grootte van inzetstuk opgegeven bestand. Het bestand waarvan de grootte wordt bepaald, moet zich op dezelfde locatie bevinden als het bestand dat het bestand bevat deze instructies. Bovendien moet het zich in dezelfde map of in een submap bevinden.

Bijvoorbeeld:

#fsize virtueel Voegt de grootte van het opgegeven bestand in. In tegenstelling tot #fsize kan een bestand een relatief of absoluut pad bevatten zonder de protocolnaam (HTTP://) en domeinnaam en dus verwijzen naar een bestand in een andere map op dezelfde site.

Bijvoorbeeld: Zal de grootte weergeven dit bestand: 37K.

Het maatformaat wordt bepaald door de SSI-instructies.

#flastmod-bestand Voegt de laatste wijzigingsdatum van het opgegeven bestand in. Het bestand waarvan de wijzigingsdatum wordt bepaald, moet zich op dezelfde locatie bevinden als het bestand met de instructies. Bovendien moet het zich in dezelfde map of in een submap bevinden.

Bijvoorbeeld:

#flastmod virtueel Voegt de laatste wijzigingsdatum van het opgegeven bestand in. In tegenstelling tot #flastmod kan het bestand een relatief of absoluut pad bevatten zonder de protocolnaam (HTTP://) en domeinnaam en dus verwijzen naar een bestand in een andere map op dezelfde site.

Bijvoorbeeld: Zal de datum van de laatste wijziging van dit bestand weergeven: 08/10/2014.

Het datumformaat wordt bepaald door de SSI-instructies.

#exec cmd Lanceringen extern programma en voegt het resultaat van de uitvoering ervan in de inhoud van de pagina in.

Bijvoorbeeld,

#execcgi Net als #exec voert cmd een cgi-script uit en voegt het resultaat van de uitvoering ervan in de pagina-inhoud in.

Bijvoorbeeld,

#config errmsg definieert het bericht dat in tekst wordt afgedrukt wanneer er een fout optreedt. Omdat het bericht rechtstreeks in de tekst van de pagina wordt geschreven, kan het zinvol zijn om ernaar toe te leiden lege regel ( ) of vraag de bezoeker een fout te melden aan de auteur ().

#configtimefmt Definieert het datumformaat voor de opdracht met behulp van de volgende parameters:

SSI-richtlijnformaat #configtimefmt
FormaatBeschrijvingVoorbeeld
FormaatBeschrijvingVoorbeeld
%AKorte naam van de dag van de weekma
%AVolledige naam van de dag van de weekMaandag
%BAfkorting van de naam van de maanddec
%BVolledige naam van de maandDecember
%DDag van de maand01 (niet 1)
%DDatum in het formaat "%m/%d/%y"12/31/99
%eDag van de maand13
%HKlok in 24-uursformaat13
%IKlok in 12-uursformaat01
%JDag van het jaar235
%MMaandnummer01
%Mnotulen03
%PAM/PM (vóór de middag/middag)BEN.
%RTijd in het formaat "I:M:S p"23:35:46 uur
%SSeconden34
%STijd in seconden sinds 01/01/1970957228726
%TTijd in het formaat "%H:%M:%S"14:05:34
%UWeek van het jaar16
% wNummer van de dag van de week4
%yJaar in JJ-notatie99
%JJaar in JJJJ-notatie1999
%ZTijdzoneMSK

Met als gevolg een onvoorbereid team geeft volgende uitvoer: 08/10/2014

En hetzelfde commando, na de SSI-richtlijn , zal verschijnen: 08/10/2014

#config sizefmt definieert het formaatformaat voor de opdracht. configureert om de bestandsgrootte in kilobytes (37K) weer te geven, en in bytes (37.782)

#printenv Net als het goede oude DOS SET-commando worden de huidige waarden van omgevingsvariabelen weergegeven, zoals:

HTTP_USER_AGENT de naam van de browser die de bezoeker gebruikt.

REMOTE_ADDR Het IP-adres van de bezoeker.

REMOTE_HOST bezoekersadres in normale vorm.

SERVER_ADDR IP-adres van de site.

SERVER_NAME serveradres.

CHARSET_HTTP_METHOD protocol ((geen))

REQUEST_METHOD paginaverzoekmethode (GET)

HTTP_HOST sitenaam (site)

REQUEST_URI de volledige verzoekregel, zonder het protocol en de sitenaam op te geven (/docs/ssi.html)

QUERY_STRING alles wat daarna in de adresbalk stond vraagteken(meestal zijn dit formulierparameters) Probeer deze pagina aan te roepen met enkele parameters na het vraagteken en je zult ze hier zien ()

SCRIPT_NAME volledig pad naar de pagina vanaf de hoofdmap van de site (/docs/ssi.html)..html).

DOCUMENT_NAME alleen de bestandsnaam. (ssi.html)

HTTP_REFERER pagina vanwaar u naar deze pagina bent gekomen ((geen))

SCRIPT_FILENAME volledig pad naar de pagina op de server (/home/users/s/supervisork/domains/site/docs/ssi.html)

SERVER_SOFTWARE naam van de server en geïnstalleerde modules.

SERVER_BEHEERDER – postadres servereigenaar opgegeven tijdens de installatie.

DATE_LOCAL De tijd en datum van vandaag in uw tijdzone.

DATE_GMT hetzelfde, maar volgens Greenwich.

LAATSTE_GEWIJZIGD datum en tijd laatste update pagina's.

Praktisch toepassingscommando heeft alleen pagina's voor foutopsporing, wat erg belangrijk is, gezien het feit dat elke server zijn eigen set variabelen heeft. Dit is wat er gebeurt als gevolg van de toepassing ervan op de site:

Downgrade-1..76.94.14 HTTP_X_PROTOCOL=HTTP/1.1 HTTP_X_SERVER_IP=81.177.135.112 HTTP_X_FORWARDED_FOR=144.76.94.14 HTTP_X_FORWARDED_PROTOCOL=http HTTP_CONNECTION=sluiten HTTP_USER_AGENT=Mozilla/5.0 (compatibel met Googlebot/ 2.1 ; +http://www.google.com /bot..177.135.112 SERVER_PORT=80 REMOTE_ADDR=144.76.94..ru SCRIPT_FILENAME=/home/users/s/supervisork/domains/site/docs/ssi.html REMOTE_PORT=32920 GATEWAY_INTERFACE=CGI/1.1 SERVER_PROTOCOL=HTTP / 1.0 REQUEST_METHOD=Haal QUERY_STRING= REQUEST_URI=/docs/ssi.html SCRIPT_NAME=/docs/ssi.html DATE_LOCAL=03/17/2019 DATE_GMT=03/17/2019 LAST_MODIFIED=08/10/2014 DOCUMENT_URI=/docs/ssi. html GEBRUIKER _NAME =supervisork DOCUMENT_NAME=ssi.html WORDS= KEYW= DESCRIP= TITL= HEAD= ROB=index, volg BROWSER=Mozilla/5.0 (compatibel; Googlebot/2.1; +http://www.google.com/bot. html) MAP =PER=JA

Vaak worden echter de variabelen zelf gebruikt. Bijvoorbeeld in de SSI-richtlijn #echo var.

#echo var Wordt gebruikt om de waarde weer te geven van de variabele die als parameter is opgegeven.

Bijvoorbeeld:

Jouw IP Uw browser Mijn server Je kwam van pagina U bevindt zich op pagina http://

Voert de volgende tekst uit:

Uw IP 144.76.94.14 Uw browser Mozilla/5.0 (compatibel; Googlebot/2.1; +http://www.google.com/bot.html) Mijn server webdesign.site3k..html

In nieuwere versies van SSI gebruikt de SSI-echo-opdracht standaard entiteitscodering en is er een coderingsparameter toegevoegd. De codering moet worden opgegeven VOOR de parameter var. Mogelijke coderingswaarden:

entiteit- (standaard) conversie wordt uitgevoerd speciale HTML-tekens in wezen zal Russische tekst in Windows-1252-codering veranderen in krakozyabry (purpose van deze transformatie onduidelijk);

URL- er zal een escape-conversie worden uitgevoerd, alle karakters van het Engelse alfabet zullen de vorm %nn aannemen, waarbij nn de karaktercode is in hexadecimale codering, waardoor ze kunnen worden gebruikt in de URL-string;

geen- er zullen geen transformaties worden uitgevoerd (zoals voorheen, met het enige verschil dat HTML-entiteiten die eerder waren gecodeerd, niet worden gecodeerd en punthaken en ampersands in SSI-variabelen kunnen worden ingevoegd).

Voorbeeld:

#set var-waarde Stelt de waarde van een variabele in als er geen variabele wordt gemaakt. Commandoformaat stel var=" in VARIABLE_NAME " waarde=" ITS_VALUE !}"

Deze code bijvoorbeeld:

SERVER_NAME variabele waarde = " " » Wijzig de waarde: Nu de waarde van de variabele SERVER_NAME=" »

Zal de volgende regels uitvoeren:

De waarde van de variabele SERVER_NAME = “site” Laten we de waarde veranderen: Nu de waarde van de variabele SERVER_NAME = “discoverer.by.ru”

Vervang uiteraard de standaard exemplaren omgevingsvariabelen Het is misschien helemaal niet logisch, maar het kan handig zijn om uw eigen variabelen toe te wijzen, bijvoorbeeld:

Om de opdracht op de juiste plaats op de pagina toe te passen

Het ziet er zo uit: Dit is het meest visuele hulpmiddel SSI(let op speciale karakters V oude versie SSI's worden opnieuw gecodeerd zodat ze op de pagina verschijnen in plaats van te werken zoals verwacht.

Uiteraard moet u een variabele definiëren voordat u deze op de pagina gebruikt.

Het vermogen om met variabelen te werken is een van de de belangrijkste kenmerken SSI. Zonder dit zou deze technologie niet zo wijdverspreid zijn.

SSI-operaties en operators.

SSI biedt geen ondersteuning wiskundige berekeningen En string-bewerkingen. De SSI-technologie ondersteunt echter vervangingen, die kunnen worden beschouwd als een analoog van aaneenschakeling. Met vervanging kunt u omgevingsvariabelen gebruiken als parameters van SSI-richtlijnen en de waarden van variabelen en tekenreeksen combineren (samengevoegd). Bij het vervangen worden variabelen tussen accolades geplaatst " {} ", en worden voorafgegaan door een dollarteken " $ " (soms kunnen de haakjes worden weggelaten).

Bijvoorbeeld:

Plaatst het volledige pad en de naam van deze pagina in de NEW_VAR variabele en geeft deze in tekst weer:

Http://site/docs/ssi.html

Voeg indien nodig dollartekens, schuine strepen, krullende beugels en aanhalingstekens, deze worden voorafgegaan door een schuine streep:

\$ \/ \" \{ \}

#if, #elif, #else en #endif – Voorwaardelijke uitspraken. Hiermee kunt u code uitvoeren of tekst op de pagina weergeven, afhankelijk van het resultaat logische vergelijking. Code die niet aan de voorwaarde voldoet, verschijnt op geen enkele manier, zelfs niet bij het bekijken van de “bron”.

Operatorformaat:

HTML-code die wordt uitgevoerd als FIRST_CONDITION waar is HTML-code die wordt uitgevoerd als de FIRST_CONDITION onwaar is en de SECOND_CONDITION waar is HTML-code die wordt uitgevoerd als alle voorwaarden onwaar zijn

Een voorwaarde is een tekenreeks die waar is als deze niet leeg is, of een reeksn. Operatoren kunnen zijn:

    Gelijkwaardigheid = Ongelijkheid != Minder < Kleiner dan of gelijk aan <= Meer > Groter dan of gelijk aan >= Ontkenning (niet waar) !

Als de tweede regel tussen schuine strepen ("/") staat, is het een reguliere expressie. De voorwaarde is bijvoorbeeld waar als de eerste regel ten minste één exemplaar van de tweede regel bevat.

U kunt meerdere vergelijkingsoperatoren combineren met behulp van de operatoren && (“logisch EN”) en || (“logisch OF”). Haakjes worden gebruikt om voorwaarden te groeperen. Om variabelen in een voorwaarde op te nemen, worden ze voorafgegaan door een dollarteken. Bijvoorbeeld:

Pagina aangevraagdOpera-browserbrowser Microsoft-internet OntdekkingsreizigerNetscape Navigator-browserzoekrobot

Resultaat:

Pagina opgevraagd door de Netscape Navigator-browser

Aandacht: Elke SSI-richtlijn moet beginnen met de tekens (einde commentaar). In dit geval moeten er tussen het einde van de SSI-richtlijn en de koppeltekens aan het einde van de opmerking, volgens ten minste, één spatie, anders herkent de server de richtlijn mogelijk niet correct, waardoor de koppeltekens en punthaken worden aangezien voor het einde van de opdracht.

Kenmerken van SSI-scripts

  • SSI Server Side Inclusief wordt vertaald als server-side-insluiting. De naam zelf weerspiegelt de belangrijkste kenmerken van SSI:
  • SSI-instructies werken niet op lokale computers, ze worden alleen verwerkt door WEB-servers en hoe de pagina er uiteindelijk uit zal zien, kunt u alleen zien door deze op de server te plaatsen en van daaruit in de browser te laden. Voordat een pagina wordt uitgegeven, leest de server deze regel voor regel en verwerkt deze, nadat hij SSI-instructies heeft gevonden, en voegt in plaats daarvan het uitvoeringsresultaat in. De instructies zelf worden niet opgeslagen op de door de bezoeker ontvangen pagina.
  • SSI kan geen bestanden van een ander domein opnemen.
  • SSI wordt niet door alle servers ondersteund en servereigenaren moeten de ondersteuning ervan aangeven in de hostbeschrijving.
  • SSI wordt niet in alle bestanden verwerkt. In veel bestanden wordt de inhoud eenvoudigweg niet geanalyseerd op de inhoud van SSI-instructies; dit wordt gedaan om de server niet te vertragen door onnodige verwerking. De verwerkte bestandstypen worden gespecificeerd in de hostbeschrijving. Je kunt ze ook bekijken in httpd.conf of srm.conf (als je er toegang toe hebt). De volgende regels geven de analyse van SSI-instructies aan: AddType text/html .shtml AddHandler server-parsed .shtml Meestal zijn dit HTM-, HTML- en SHTML-bestanden.
  • Om SSI-richtlijnen te verwerken, is het soms nodig om een ​​.htaccess-bestand (de naam begint met een punt) in de hoofdmap van de site te plaatsen, met instructies zoals AddHandler server-parsed .shtml AddHandler server-parsed .html Dit kan zijn de enige manier invloed hebben op de werking van de server als u niet de beheerder bent.
  • Soms verbieden onvriendelijke beheerders de uitvoering van PHP-scripts in SSI-richtlijnen, en in plaats van het resultaat van de scriptuitvoering verschijnt er een bericht als
    ""
    In dit geval moet u de richtlijn Opties + Inclusief toevoegen aan .htaccess Meer informatie over het .htaccess-bestand kunt u kijken bij “Het .htaccess-bestand instellen”
  • SSI wordt niet in alle mappen verwerkt. Om ervoor te zorgen dat een map SSI-richtlijnen kan verwerken, moet de map in het access.conf-bestand worden beschreven als Opties Indexes Inclusief (of Opties Inclusief). Submappen nemen de optie over en vereisen geen aparte ingang. Niet iedereen heeft toegang tot dit bestand, maar er is een algemene ongeschreven regel: op veel hosts wordt de inhoud door 2 gedeeld hoofdmappen: cgi-bin en WWW. In bestanden in de cgi-bin directory worden (meestal) geen bestanden gecontroleerd op SSI-instructies en worden er geen bestanden (zelfs die welke zijn opgenomen in ) weergegeven in browsers. Daarom mag een bestand dat een fragment is van een pagina en daarin is opgenomen door de SSI-richtlijn NIET in de cgi-bin-directory worden geplaatst. cgi-bin kan alleen cgi-scripts bevatten, omdat deze niet rechtstreeks in de pagina zijn opgenomen (alleen de resultaat van hun uitvoering is inbegrepen).
  • SSI-richtlijnen worden niet alleen verwerkt in de door de bezoeker opgevraagde bestanden, maar ook in de daarin opgenomen fragmenten, als deze een extensie hebben waarvoor controle op de aanwezigheid van SSI-richtlijnen is toegestaan. Dit kan van toepassing zijn op verschillende manieren, in het bijzonder om variabelen te verwerken die zijn ingesteld op de pagina die deze fragmenten bevat.
  • Normaal gesproken kunnen alle bestanden in de WWW-directory worden opgenomen met behulp van de SSI include-instructie, zodat de fragmenten zelf kunnen worden opgeslagen in bestanden met elke extensie. Houd er echter rekening mee dat HTM- en HTML-bestanden worden geïndexeerd zoekmachines, wat betekent dat ze de bezoeker naar een onvolledig fragment van de pagina kunnen sturen (dit is natuurlijk onwaarschijnlijk, aangezien hiervoor een geïndexeerde link naar dit fragment moet zijn), wat hem op zijn beurt kan teleurstellen en wegduwen van de site. Er zijn verschillende manieren om deze vervelende nieuwsgierigheid te vermijden:

Reikwijdte van SSI.

Normaal gesproken wordt SSI gebruikt op dezelfde plaatsen waar Frame, Object, Script src=, etc., bijvoorbeeld om herhalende fragmenten (menu's, bannercodes, headers) op te nemen in een WEB-pagina. Het activeringsmechanisme is echter compleet anders. Als in Frame, Object, Script src=, enz. het opgenomen bestand eenvoudigweg door de server wordt uitgegeven en al op zijn plaats is ingevoegd door de user-agent (browser), dan ontvangt de browser in het geval van SSI de pagina al afgewerkte vorm. Het inschakelen gebeurt rechtstreeks op de server en hierdoor ontstaan ​​de volgende verschillen:

  • Wanneer u het type Frame, Object, Script src=, etc. inschakelt, kan de bezoeker de broncode van de pagina achterhalen, maar wanneer u SSI inschakelt, niet. Verhulling broncode kan nuttig zijn voor de auteur.
  • Wanneer u het type Frame, Object, Script src=, enz. opneemt, is de logische volledigheid van de opgenomen objecten vereist, maar bij SSI-inbedding is dit niet het geval. Dit kan ook handig zijn, omdat u hiermee de pagina in willekeurige fragmenten kunt splitsen en deze in afzonderlijke bestanden kunt scheiden. meer gemeenschappelijke plaatsen.
  • Wanneer u een frame-, object-, etc.-type opneemt, kan naar een object dat zich in het opgenomen fragment bevindt, worden verwezen als FRAGMENT_NAME.OBJECT_NAME, en naar een object dat is ingebed door de SSI-instructie als naar een gewoon element pagina's is het gemakkelijker op deze manier.
  • Wanneer u het type Frame, Object, etc. inschakelt, kunt u de gebruiker toestaan ​​de inhoud van objecten te wijzigen, maar bij SSI-injectie is dit niet het geval. Dit beperkt de reikwijdte van SSI aanzienlijk.
  • Wanneer u het type Frame, Object, Script src=, etc. inschakelt, vindt de verwerking van voorwaarden en andere richtlijnen plaats op de computer van de bezoeker, en met SSI op de server. SSI-technologie vertraagt ​​dus het laden: de winst wordt alleen bereikt als grote fragmenten wel of niet worden opgenomen, afhankelijk van specifieke omstandigheden (hoewel de belasting van de serverprocessor toeneemt, neemt de belasting van de communicatielijn af).
  • Omdat SSI door de server wordt uitgevoerd, is het ware uiterlijk van de pagina alleen daar te zien, wat niet handig is. Programma's waarmee u SSI kunt ontvangen lokale computer, geef niet exact dezelfde optie, al was het maar vanwege het verschil in type variabelen DOCUMENT_URI. En als we rekening houden met de directe instellingen van elke specifieke server, kan het verschil van fundamenteel belang zijn.
  • Wanneer u het type Frame, Object, Script src=, enz. inschakelt, wordt het opgenomen object slechts één keer geladen en de volgende keer dat het wordt ingeschakeld, uit de cache gehaald. Bij SSI-injectie wordt bij elk een fragment geladen nieuwe pagina, Het laden AANZIENLIJK vertragen: dit is al erg slecht.
  • Wanneer u het type Frame, Object, Script src=, enz. inschakelt, bevindt het menu zich in één bestand, en met SSI wordt het in elke pagina ingebed, waardoor het interne referentiële gewicht wordt verspreid en de hele zaak wordt verpest wanneer dat nodig is om al het referentiële gewicht op de hoofdpagina te concentreren.

Wat te gebruiken: Frame, Object, Script src= of SSI is voor iedereen een persoonlijke zaak.

Bestand opnemen voet.htm:

Het praktische verschil tussen dezelfde pagina die met verschillende technologieën is gebouwd, is alleen dat elke pagina met IFRAME-technologieobjecten er completer uitziet en volledig onafhankelijk is. Hierdoor wordt de laadtijd van de eerste pagina iets verlengd, maar door caching hoeven herhaalde fragmenten niet te worden geladen volgende pagina en verder laden gaat aanzienlijk sneller (voor meer informatie over de voordelen van Frame, zie “Als je niet van frames houdt, dan weet je niet hoe je ze moet voorbereiden”). De combinatie van twee schakeltechnologieën geeft resultaten van de hoogste kwaliteit. Het wordt gebruikt op alle professionele sites en als Frame en Object elkaar ergens niet ontmoeten, dan zijn in ieder geval Script src= en (dezelfde opname van code in apart bestand en slechts één keer geladen) wordt overal gebruikt.

Het gebruik van IFRAME kan SSI niet volledig vervangen, omdat u met SSI niet alleen fragmenten per voorwaarde kunt laden (wat kan worden opgelost met een script), maar ook, zoals weergegeven in het voorbeeld, eventuele parameters via variabelen aan hen kunt doorgeven. Zonder SSI kan dit alleen worden gedaan POST-methode of via HTTP_REFERER (vervolg van de bestandsnaam, na het vraagteken), voor verdere verwerking door een script. Maar de mogelijkheden van een dergelijke transmissie kunnen niet worden vergeleken met de mogelijkheden van het verzenden van de waarden van SSI-variabelen. Daarom kan SSI zelfs op framegebaseerde pagina's vereist zijn meer gereedschap voor ons beschikbaar is, hoe beter en sneller het resultaat is.

Ik wil je vertellen over de basisprincipes van technologie serverkant omvat of ssi.
ssi vertaalt zich naar "insluitsels aan de serverzijde". Deze technologie helpt veel tijd te besparen bij het maken van een website en het uploaden ervan naar de server. Over het algemeen is ssi ontworpen om het werk van een webmaster zo eenvoudig mogelijk te maken.

Hier is bijvoorbeeld een heel reële situatie:
U heeft een site die uiteraard geen gebruik maakt van ssi, met een aantal pagina's die in de buurt liggen van: laten we minimaal 50 pagina's nemen. Zo heeft u, als goede webmaster die oog heeft voor zijn bezoekers, op elke pagina een tekstmenu geplaatst. En plotseling veranderde om de een of andere reden de naam van een sectie, of misschien wilde je een nieuwe toevoegen. Wat nu om alle vijftig pagina's opnieuw te openen en alles steeds opnieuw te schrijven?! In ons geval is dit helaas de enige oplossing, hoewel sommige goede redacteuren in staat zullen zijn deze overweldigende last te verlichten (en hoe u dit gemakkelijker kunt maken!, homesite bijvoorbeeld).

Je zou dus niet zo’n probleem hebben als je ssi-technologie zou gebruiken. Laat het me uitleggen: als in plaats van een tekstmenu op alle pagina's zoiets als

En in het bestand “(www)/ssi/menu_txt.html” zou de inhoud van dit menu staan, en om een ​​sectie toe te voegen of te wijzigen hoeft u alleen de inhoud van slechts één bestand menu_txt.html te wijzigen. Zoals je waarschijnlijk al geraden had, zijn alle pagina's in plaats van "commentaar"

De code uit menu_txt.html wordt ingevoegd.

Syntaxis van ssi-richtlijnen.

De syntaxis van ssi-richtlijnen is:
Alle richtlijnen zijn bijgevoegd in een commentaar

Het belangrijkste verschil tussen een ssi-richtlijn en een commentaar is het "#"-symbool onmiddellijk(!) na "

en niets anders!

Hier is een lijst met enkele ssi-"functies" (ze worden onmiddellijk na het "#"-symbool geschreven)

erbij betrekken

Bevat de tekst (code, inhoud) van het opgegeven document/bestand in dit document. De locatie van bestanden op de server wordt aangegeven met de volgende kenmerken:

bestand - u moet het pad opgeven dat relatief is aan dit document, dat wil zeggen dat het opgenomen document/bestand zich in dezelfde map als dit document moet bevinden, of in de mappen lager/hoger (some_catalog/, ../some_catalog).
virtueel - u kunt zowel een relatief (zoals in het geval van een bestand) als een absoluut pad opgeven (kan /some_catolog of ../some_catalog bevatten).

include stelt u in staat het resultaat van cgi-scripts op te nemen, en deze te openen met een bepaalde queryreeks. Bijvoorbeeld,

Stelt de waarde van een variabele in. Een variabele wordt gedeclareerd met behulp van het var-attribuut, en de waarde ervan wordt gespecificeerd met behulp van het value-attribuut.

variabele a zal de waardevariabele hebben.
Of je kunt dit doen:

Variabele a zal gelijk zijn aan varia$(c)
Om een ​​variabele te vervangen, moet je deze tussen accolades plaatsen en $ ervoor zetten. Als u wilt dat het dollarteken ($) eenvoudigweg als symbool wordt weergegeven en niet als variabele wordt weergegeven, plaatst u er een schuine streep () voor

echo

drukt de waarde af van de variabele die is opgegeven in het var-attribuut.

dat wil zeggen dat in plaats van deze code de waarde van de variabele a wordt ingevoegd

Voorbeelden van het gebruik van ssi.

Rubriek:<!--#echo var="title" --> "> , html"> !}

Documenttekst



Zoals je in dit voorbeeld kunt zien, is het gebruik van ssi niet zo moeilijk, en bovendien erg handig.

Technische aspecten van het gebruik van ssi.

Het is de moeite waard een paar woorden te zeggen over de technische ondersteuning die nodig is om ssi te gebruiken. Als u eenvoudigweg een bestand op uw lokale schijf maakt met de juiste ssi-opdrachten en dit in uw browser opent, zullen er geen insluitsels optreden, aangezien alle uitdrukkingen als volgt zijn:voor de browser zijn het pure opmerkingen. De zogenaamde “insluitingen” vinden plaats in de fase van verwerking van het document door de server, voordat het naar de gebruiker wordt verzonden. In ons geval is er helemaal geen sprake van een dergelijke fase (verwerking van het document door de server). Om alle voordelen van ssi op uw lokale computer ten volle te kunnen ervaren, heeft u dus een “thuis”-webserver nodig.
En hier is nog iets: niet elke hostingprovider ondersteunt ssi. Dit is meestal een probleem met gratis hosting. Maar sommigen van hen vereisen, zelfs als ze u toestaan ​​​​ssi te gebruiken, hiervoor een of andere vorm van betaling, bijvoorbeeld door het plaatsen van advertenties op de site.