După ce sesiunea este stabilită, serverul Web execută programul time.cgi CGI și trimite rezultatul operării sale către browser, adică imaginea unei pagini Web noi. Acesta este un exemplu de rulare a unui program CGI simplu, similar celui pe care l-am discutat în sesiunea a 17-a, "Introducere în CGI".
O altă modalitate de a începe un program CGI este includerea numelui acestuia în codul HTML format. De exemplu, formularul de mai jos solicită programul CGI process.cgi după ce faceți clic pe butonul Trimitere:
Această metodă de a apela un program CGI are avantajul suplimentar: vă permite să transmiteți parametrii la programul CGI pentru procesare. Poate că această proprietate a formelor poate fi numită una dintre cele mai utile.
Transmiterea parametrilor în programul CGI
Utilitatea și flexibilitatea programelor CGI cresc semnificativ datorită transferului de parametri suplimentari direct din hyperlink. De exemplu, puteți crea un hyperlink într-un document care execută programul CGI foo.cgi și îi transmite doi parametri, X și Y, egali cu unele valori. Pentru a face acest lucru, în descriptor <А HREF> trebuie să setați o adresă URL particularizată. Formatul acestei adrese URL este prezentat în Fig. 20.1.
Fiecare parametru este numele unei valori care va fi transmisă programului CGI (similar elementului denumit al formularului HTML). O valoare a parametrului este un șir atribuit acelui nume. De exemplu, pentru a crea un hyperlink, după ce faceți clic pe care se va face cu CGI-program și semna parametrii an, valoarea pentru fiecare Berbec și 1969, respectiv, utilizați următorul HTML-cod:
În interiorul programului CGI, parametrii sunt manipulați de modul param al modulului CGI în mod obișnuit:
Puteți transfera orice număr de parametri. Dacă doriți să treceți un parametru gol (fără o valoare), utilizați unul dintre numele acestuia, la fel ca în cazul parametrului autor în exemplul următor:
Folosind caractere speciale
Când apelați CGI-hghrograms cu parametri, trebuie să fiți conștienți de existența unor caractere speciale care nu pot face parte din URL. De exemplu, un simbol. (semn de întrebare) este specială și separă partea principală a adresei URL de lista parametrilor. Alte caractere speciale includ simboluri precum , spații și ghilimele.
Pentru o listă completă de caractere speciale, consultați standardele de Internet RFC 2396.
Pentru a face ca unul sau mai multe caractere speciale să fie parte a URL-ului, trebuie să le codificați într-un mod special. Aceasta înseamnă că valoarea ASCII a acestui caracter ar trebui să fie convertită la un număr hexazecimal din două cifre și apoi să se pună în fața lui un simbol procentual. Rezultatul aplicării "rețetei" descrise pentru codificarea expresiei "Bună ziua!" (În acest exemplu, textul rusesc este folosit doar pentru claritate. Când transmiteți aceleași simboluri chirilici ca parametri ai adresei URL, acestea trebuie să fie codificate în același mod ca și caracterele speciale.):
Este de înțeles că, într-o astfel de linie parțial "criptată", puteți face ușor o greșeală și, în general, aspectul său este neatractiv. Prin urmare, modulul CGI oferă o funcție de creare automată a unor astfel de linii. Următorul exemplu arată modul de obținere a URL-ului cu "criptarea" cerută de caractere speciale.
Acest fragment al programului creează o legătură HTML corect codată (cu cerințele pentru adresa URL). Observați modul în care modulul CGI este utilizat în acest cod: utilizați CGI qw (: all escape). Când utilizați modulul CGI, funcția de evacuare nu este de obicei disponibilă pentru program și, dacă este necesar, trebuie să o specificați în instrucțiunea de utilizare în formă explicită.
Valoarea URL-ului construit ca rezultat al acestui program va arăta astfel:
Ultimul personaj la sfârșitul adresei URL este ignorată de programul CGI atunci când parametrii sunt selectați utilizând funcția param.