Sziasztok!
Petrovay Szabolcs George tegnapi al-CGI valaszat szeretnem nehany kevesbbe
szerver- es oprendszer-fuggo infoval kiegesziteni.
En sem szeretnem feleleveniteni a CGI-ASP-akarmi vitat, csak egy kis
tajekoztatot adnek a Szabolcs alatal leirt dolgok CGI-ben torteno
megvalositasarol.
Elore is elnezest kernek az esetleges ismetlesekert, sok olyan dolog van,
amit mar en is leirtam regebbi WM-ekben, csak hat egyre tobben vagyunk, es
ugy latszik nem mukodik meg az, hogy ha valakinek van egy kerdese, akkor
eloszor atbongeszi az archivumot, es ha nem talal valaszt, csak akkor
kerdez... :(((
Tehat eloszor par szo magarol a CGI-rol: Azt remelhetoleg mar minden
(leendo) WebMester tudja, hogy ez nem egy programozasi nyelv, hanem egy
felulet (CGI=Common Gateway Interface, talan Altalanos Atjaro-Feluletnek
lehetne forditani, de inkabb ne tegyuk...) , amin keresztul a tavoli
felhasznalo futtathat programokat egy szerveren. Egy feluletnek ugyebar ket
oldala van, nezzuk sorban:
* Kimenet: A szerveren futo program kimenete egy leegyszerusitett
HTTP-valaszkent jelenik meg, ez a gyakorlatban azt jelenti, hogy az
adattipus-megjeloles utan rogton kuldhetunk barmit, HTML oldalt, GIF kepet,
akarmit. Meg konkretabban: ha kiirjuk egy CGI-n keresztul hivott programbol
a kovetkezo szoveget: "Content-type:text/html", majd ket soremelessel
lezarjuk a http-fejlecet, akkor jeleztuk a kliensnek, hogy egy HTML oldalt
fogunk kuldeni. Ezek utan barmit kiirhatunk a programbol, az rogton megy a
browsernek, es HTML kod-kent fog ertelmezodni. Remelem ertheto volt a
folyamat.
* Bemenet: A CGI-n keresztul futtatott program harom helyen kaphat
adatokat, ezek kozul a leggyakrabban a kornyezeti valtozokat szoktuk
kihasznalni. Ezeket a kornyezeti valtozokat a HTTP-szerver allitja be a
program szamara. A legfontosabb ilyen valtozok:
REMOTE_HOST - a programot hivo kliens cime, nem mindig tudjuk, ezert
neha ures
REMOTE_ADDR - a programot hivo kliens IP-szama, ez minden esetben
tartalmaz valos adatot
QUERY_STRING - FORM-feldolgozasnal a kerdoiv adatai, ha GET tipusu
adatkuldes volt
HTTP_USER_AGENT - a programot hivo kliens bongeszojenek tipusa
Persze meg eleg sok van, de ezeket hasznaljuk a legtobb CGI programban. A
masodik adatforras a standard bemenet, ide olyankor kerul adat, amikor egy
kerdoivet POST modszerrel kuldtek el. A harmadik, nagyon ritka adatforras a
futtatott program parancssora, ide az ISINDEX tipusu kuldeskor kerul adat,
de ilyenkor a mar emlitett QUERY_STRING kornyezeti valtozo is tartalmazza a
kuldott adatokat.
Remelem sikerult a CGI-t ovezo kod nagy reszet eloszlatni, mar csak par szo
a konkret megvalositasokrol. Mivel a CGI nem szabja meg a futtatando
programot, ezert termeszetesen az igy meghivott programokat barmilyen
nyelven megirhatjuk, a lenyeg az, hogy a HTTP-szervert futtato oprendszeren
mukodjon. Mivel ez altalaban valamilyen UNIX-mutacio, ezert leggyakrabban
C, vagy Perl nyelven szoktak CGI-programokat irni. Celszeru nekunk is ezen
nyelvek valamelyiket valasztani, mar csak a hordozhatosag es nagy
tamogatottsag miatt is. A C mellett szol a sebesseg, a Perl mellett pedig
az egyszeruseg, hatekonysag, a modositas es ujraforditas nelkuli
hordozhatosag, valamint az a kb 300 MB szabadon felhasznalhato modul, amit
a leheto legvaltozatosabb temakorokben mar elkeszitettek (CPAN).
Vegul: Hogyan lehet egy ilyen programot meghivni? Egyszeruen hivatkozni
kell ra, ezt persze tobbfelekeppen is meg lehet tenni, pl
urlapfeldolgozasnal a FORM elem ACTION parameterenel, vagy dinamikusan
keszulo kepek eseten az IMG elem SRC parameterenel, esetleg linkeknel, az A
elem HREF parameterenel, vagy SSI segitsegevel. Leggyakrabban ezt szoktuk
hasznalni, most mar tenyleg csak par szoban ez egy olyan mechanizmus,
amivel elore megirt HTML oldalba dinamikus informaciokat illeszthetunk.
Ezeket az informaciokat a HTTP szerver fogja beilleszteni az oldal adott
pontjara. Igy egy CGI-program kimenetet is beilleszthetjuk egy HTML oldalra
az alabbi utasitassal:
<!--#exec cgi="programnev.cgi" -->
Persze az itt leirt osszes funkcio tesztelesehez mukodo webszerver kell, de
a jelenleg hozzaferheto ilyen szerverek tulnyomo tobbsege tamogatja a CGI-t
es SSI-t, ami ugyebar nem mondhato el az ASP-rol, a VBScriptrol meg sajnos
meg annyira sem.
Remelem tudtam segiteni, es meg egyszer elnezest a hosszu levelert, talan
nem volt felesleges. Tovabbi kerdesek johetnek szemelyes levelben vagy a
listara.
Sziasztok,
_______________ _ _ _ _ _
Sza'sz Pe'ter\-_\ /_/-'\-_\-_________________
mailto: ICQ-UIN: 4132467
|
Hi!
irta:
> Ez itt 1 1szeru onMouseOveres script, ami megy IE4.0 alatt, de a
> NN 4.0 a fule botjat se mozditja ra...
[...]
> <IMG SRC="warn1.gif" onMouseOver="mouseEvent()" WIDTH=401 HEIGHT=202
> BORDER=0>
A hiba az On keszulekeben van :)
Az onMouseover nem az Image objektum esemenykezeloje, hanem a linke.
Ezert nem is csoda, hogy nem mukodik NS alatt. Az, hogy az IE
lefuttatja, maganugy. A megoldas:
<A href="#" onMouseOver="mouseEvent()" onClick="return false">
<IMG SRC="warn1.gif" WIDTH=401 HEIGHT=202 BORDER=0></A>
Egy masik megjegyzesem: A language parameter erteke inkabb
"JavaScript1.1" legyen, hogy a NS 2.x bongeszok ne hasaljanak el az
image objektum lattan... Ezutan meg tedd be az alabbi elemet is:
<SCRIPT language="JavaScript">
<!--
function mouseEvent() { }
//-->
</SCRIPT>
Latszolag felesleges, de nem az.
udv,
--
Boca -=> http://winnie.obuda.kando.hu/~boca/ <=- Bo'cz Pe'ter
|