Programozási űrlapok

Ha formanyomtatványokat tervez, előbb vagy utóbb létre kell hoznia egy alkalmazást a kiszolgálóoldaltól a feldolgozáshoz. Ne pánikoljon. Nincs semmi varázslatos a szerver oldalról történő programozással kapcsolatban, és ez nem túl nehéz. Némi kitartással és egy kis gyakorlat után bélyegezed a feldolgozási kérelmet.

A legfontosabb tanácsadás, amit az űrlapok programozásával kapcsolatban adhatunk, könnyen megjegyezhető - más emberek munkájának másolása. Nagyon nehéz írni egy alkalmazás-feldolgozási alkalmazást a semmiből. A futó alkalmazás másolása és módosítása az űrlap igényeihez képest sokkal könnyebb. Szerencsére a szerver-gyártók tisztában vannak ezzel, és általában a mintaformátum-feldolgozó alkalmazásokat szolgáltatják a kiszolgálóval együtt. A cgi-src könyvtárban egy kicsit szólal meg, és számos hasznos példát találsz, amelyet másolhat és alkalmazhat.

Önnek nem is kell elvárnia, hogy reprodukálja mindazt, ami hasznos a szerverhez, és nem is adhatunk teljes körű útmutatót a programozáshoz. Mindössze annyit tehetünk, hogy egyszerű példákat adunk a GET és a POST alkalmazásokra, így érezhetjük magunknak ezt a munkát és talán a megfelelő irányba tereljük.

Mielőtt elkezdenénk, vegye figyelembe, hogy nem minden kiszolgáló hívja ezeket az alkalmazásokat ugyanúgy.


A példák terjed széles osztályát szerverek bekövetkezett az eredeti HTTP-szerver létrehozása közepén az NCSA (National Center for Supercomputing Applications, a National Center for Supercomputing Applications). A nagyon népszerű és könnyen elérhető Apache szerverrel is együtt kell dolgozniuk. Minden esetben kérjük, olvassa el a szerver dokumentációját. Részletes információk találhatók a könyvekben: «CGI programozás Perl» Scott Gülich (Scott Guelich) Shishir Gundavarama (Shishir Gundavaram) és Günter Birzneksa (Gunther Birznieks) «Webmaster dióhéjban» 2 Stephen Speynauera (Stephen Spainhour) és Robert Eckstein (Robert Eckstein) által kiadott "O'Reilly" kiadó.

Egy alternatíva a CGI-programozási modell egy Java-servletov3 a könyvben leírt «Java Servlet programozás» 4, a toll a Jason Hunter (Jason Hunter) és William Crawford (William Crawford) (O'Reilly). Servlets lehet használni kezelésére egyaránt kap- és POST-formák, bár szentelt általánosabb kérdéseket. Ebben a könyvben nincsenek servlet példák.

Visszatérési eredmények
Mielőtt elkezdenénk, meg kell vitatnunk, hogy az alkalmazás hogyan végződik a szerver oldalán.


A kiszolgáló minden alkalmazása átviszi az eredményeket a kiszolgálóra (majd a felhasználóra), és hozzáadja őket az alkalmazás szabványos kimenetéhez MIME kódolású fájlként. Ezért az első kimeneti vonalnak MIME típusú leírónak kell lennie a tartalomtípus számára. Ha az alkalmazás HTML dokumentumot ad vissza, akkor az első sor:

A második sor teljesen üres legyen. Az alkalmazás visszaadhatja a másik típusú tartalmat - csak adja meg a helyes MIME-típust. A GIF-képeket például előzi meg:

A tényleges szöveg, amely nem értelmezhető HTML formátumban, visszaküldhetõ:

Ez gyakran hasznos, ha vissza kell állítanunk más parancsok kimenetét, amelyek a HTML helyett a szöveges szöveget generálják.

Amikor a www.kumquat.com szerver feldolgozza ezt az URL-t, akkor a cgi-bin könyvtárban tárolt dump-get nevű alkalmazást hív.


Minden, ami a kérdőjel után megy, átadásra kerül az alkalmazásnak paraméterként.

Továbbá, a helyzet a GET típusú URL természetével összhangban eltérő lehet. Míg az űrlapok a név / érték párjának URL-jébe kerülnek, a GET alkalmazások olyan URL-címmel hívhatók fel, amely csak az értékeket tartalmazza. Így:

ez egy érvényes hívás, melyet pluszjel (+) választ el. Ez a hívás általában akkor fordul elő, amikor egy alkalmazás egy keresődokumentumot egy címke segítségével egy alkalmazáshoz kapcsol össze. A felhasználó által a beviteli mezőbe beírt paramétereket a kiszolgálói oldalról a pluszjelvel elválasztott névtelen paraméterekként továbbítják az alkalmazásnak.

Ha GET-alkalmazást hívott meg a megadott paraméterekkel, a kiszolgáló ezeket a paramétereket egy módon továbbítja az alkalmazáshoz. A meg nem nevezett paraméterek eltérő módon vannak átadva.

A megadott paraméterek használata a GET alkalmazásokkal
Nevezett paramétereket átengedjük GET-alkalmazásokat létrehozni QUERY_STRING változó, és jelölje ki azt az értéket az egész, hogy az URL része, amelyet majd egy kérdőjel. Ha a korábbi példát vesszük, a QUERY_STRING értéke:

Az alkalmazásnak meg kell kapnia ezt a változót, és ki kell választania a név / érték párt. Szerencsére a legtöbb szerver számos szabványos programot tartalmaz, amelyek elvégzik ezt a munkát, így egy egyszerű C program, amely egyszerűen kinyomtatja a paramétereket, valami ilyesmi lehet:

#include
#include
#define MAX_ENTRIES 10000
typedef struct char * val;
> bejegyzés;
char * makeword (char * vonal, char stop);
char x2c (char * mi);
void unescape_url (char * url);
void plustospace (char * str);
fő (int argc, char * argv [])
int num_entries, i;
char * query_string;
/ * A környezeti változó értéke QUERY_STRING * /
query_string = getenv ("QUERY_STRING");
/ * Paraméterek kivonatolása, ütemezés táblázat készítése * /
a (num_entries = 0; query_string [0]; num_entries ++) bejegyzést [num_entries] .val = makeword (query_string, '');
plustospace (bejegyzés [num_entries] .val);
unescape_url (bejegyzés [num_entries] .val);
bejegyzések [num_entries] .name =
makeword (bejegyzés [num_entries] .val, '=');
>
/ * Adja ki a "hal" HTML * /
printf ("Tartalom-típus: szöveg / html \ n");
printf ("\ n");
printf ();
printf ();
printf ("Nevezett paraméterek \ n");
printf ("");
printf ();
printf ("A következő paramétereket adta meg: \ n");
printf ("
    \ n "); / * Kimeneti paraméterek a felhasználótól * /
    (i = 0; i \ n ");
    printf ("\ n");
    >

Valódi alkalmazásoknál be kell illeszteni az érvényes paraméter-feldolgozási kódokat a kiválasztásuk után és a HTML létrehozása előtt.

Természetesen meg kell változtatnod a renderelt HTML szöveget az alkalmazásod függvényében.

Névtelen paraméterek használata GET alkalmazásokkal
A paramétereket parancssori paraméterekként továbbítják az alkalmazásnak. Ezáltal az alkalmazásfejlesztés a szerver oldalán szinte triviális. Itt van egy egyszerű parancssorozat, amely paraméterértékeket nyomtat:

#! / bin / csh -f
#
# GET típusú, felhasználó által megadott, nem nevesített paraméterek kimenete
echo "Content-type: text / html"
visszhang
echo "
echo "
echo "Nem ismert paraméterek kimenete"
echo "
echo "
echo 'A következő paramétereket állította be:'
echo "
    '
    foreach i ($ *)
    echo "
  • '$ i
    endecho '
'
echo "
kilépés a 0-ból

Ismét ugyanazt az általános szabályt követjük: egy MIME tartalomtípust tartalmazó minta-dokumentum fejlécet állítunk elő, melyet a paraméterek és a szabványos befejezés követ. Ha valódi alkalmazássá alakítja, cserélje ki a foreach-hurkot olyan parancsokkal, amelyek valóban valamit tesznek.

#include
#include
#define MAX_ENTRIES 10000
typedef struct char * val;
> bejegyzés;
char * makeword (char * vonal, char stop);
char * fmakeword (FILE * f, char stop, int * len);
char x2c (char * mi);
void unescape_url (char * url);
void plustospace (char * str);
fő (int argc, char * argv [])
int num_entries, i;
/ * Paraméterek kivonása a stdin-ből, ütemezési táblázat létrehozása * /
(num_entries = 0;; feof (stdin); num_entries ++) bejegyzés [num_entries] .val = fmakeword (stdin, '' cl);
plustospace (bejegyzés [num_entries] .val);
unescape_url (bejegyzés [num_entries] .val);
bejegyzések [num_entries] .name =
makeword (bejegyzés [num_entries] .val, '=');
>
/ * Adja ki a "hal" HTML * /
printf ("Tartalom-típus: szöveg / html \ n");
printf ("\ n");
printf ();
printf ();
printf ("Nevezett paraméterek \ n");
printf (""); printf ();
printf ("A következő paramétereket adta meg: \ n");
printf ("
    \ n ");
    / * Kimeneti paraméterek a felhasználótól * /
    (i = 0; i \ n ");
    printf ("\ n");
    >

Mint más példák, ez a program nagyon alkalmas arra, hogy ellenőrizze a szerveralkalmazásnak átadott paramétereket, miközben újak vagyunk az űrlapokhoz és a hibakeresési alkalmazásokhoz. Más alkalmazások alapjául is szolgálhat, beillesztve a megfelelő feldolgozási kódot a paraméterlista létrehozása után, és megváltoztathatja a program kimenetét, hogy elküldje a felhasználó releváns eredményeit.

Kapcsolódó cikkek