אתה נמצא כאן יסודות השפה  »  מבוא ל CGI

מבוא לתכנות CGI

מה הן תוכניות CGI?

תכניות CGI משמשות לכתיבת דפי אינטרנט המשלבים קוד HTML עם דרך להעברת מידע בין המשתמש לשרת האינטרנט. לדוגמא, יכולה תוכנית CGI לשמש ליצירת דף טופס (FORM) שמשמש לשליחת מידע מהגולש לשרת האינטרנט, וגם להיפך, תוכנית CGI יכולה להוציא מידע ממאגר נתונים שנמצא על השרת, לעבד אותו ולשלוח אותו לדפדפן של המשתמש.

המודול  CGI.pm

המודול  CGI.pm מכיל בתוכו את כל הפונקציות הדרושות לכתיבת תוכנית CGIת מה שהופך את המשימה של כתיבת תוכנית למשימה פשוטה באמת. המודול אינו תלוי פלטפורמה, ולכן אין צורך לשכתב את התוכנית לפי מערכת ההפעלה שעליה היא רצה.  CGI.pm מכיל תיעוד מלא של המודול ושל הפונקציות שבו. מומלץ מאוד לשמור את התיעוד פתוח וזמין בזמן כתיבת תוכנית CGI.

כיצד עובדת תוכנית CGI?

טופס HTML מורכב משדות שניתן לצלא בערכים (או לפי רשימה נתונה או ערכים חופשיים). פעולת השליחה של הטופס  (SUBMIT) משייכת את הטופס והמידע שבו עם תוכנית CGI, ולהעביר את המידע (שדות+ערכים) באופן שניתן לפיענוח ע"י התוכנית (הפיענוח נעשה ע"י שימוש בפונקציות מהמודול  CGI.pm). לא חובה להשתמש בטפסים כדי להפעיל תוכנית CGI. ניתן להריץ תוכנית CGI גם ע"י קישור פשוט, המכיל, אם צריך, את הפרמטרים הדרושים לתוכנית.

#!/usr/local/bin/perl

print <<END_OF_TEXT;
/*הסימן >> והשם שבא אחריו מציינים לפנקצית ה print שזוהי מחרוזת של מספר שורות, והיא נמשכת מהשורה הבאה ועד שמופיע השם - END_OF_TEXT*/
Content-type: text/html

<HTML>
<HEAD>
<TITLE>CGI program</TITLE>
</HEAD>
<BODY>
<H1>Look at this simple program</H1>
</BODY>
</HTML>
END_OF_TEXT
/*מציין את סוף המחרוזת ל print*/

זו תוכנית CGI פשוטה, שלא משתמשת בפרמטרים, ולא צריך להשתמש במודול CGI כדי שהיא תעבוד.

העברת פרמטרים לתוכנית

כאמור, אפשר להעביר פרמטרים לתוכנית או דרך טופס, או בצורה "עצמאית" ע"י קיראה לתוכנית עם הפרמטרים המתאימים.
דוגמא לקריאה לתוכנית CGI אחרי פעולת SUBMIT של טופס:

http:/ /www.site_name.com/cgi-bin/program_name
/*קריאה לתוכנית*/
?name=value&name=value
/*הפרמטרים לתוכנית מצורפים אחרי סימן ? בצורה של זוגות - שם שדה והערך שהוא קיבל. הזוגות מופרדים ע"י הסימן &*/

דוגמא לקריאה לתוכנית CGI מקישור רגיל:

<a href="http:/ /www.site_name.com/cgi-bin/program_name
/*קריאה לתוכנית*/
?fortune"
/*הפרמטרים אינם בצורה של זוגות כי אין צורך לשייך את הערך לשדה מסויים, כמו בטופס*/

כדי שתוכנית תדע לפענח את הפרמטרים, יש צורך לייבא את המודול CGI לתוכנית. זה נעשה ע"י כתיבת השורה הבאה בראש התכנית:

use CGI;

המודול CGI שונה ממודולים אחרים, שאוטומטית מצטרפים לקוד התוכנית במלואם. ב CGI יש צורך לציים בדיוק איה פונקציות של המודול אני רוצים לייבא לתוכנית. המודול מגדיר קבוצות של פונקציות כדי להקל על העבודה. הקבוצות הקיימות (צריך לכלול את הנקודותיים כשמציינים שם של קבוצה):
שם הקבוצה תוכן
:cgi כל הפונקציות שמטפלות בארגומנטים
:form כל הפונקציות המשמשות ליצירת טפסים
:html2 כל הפונקציות המשמשות ליצירת קוד של HTML 2.0
:html3 כל הפונקציות המשמשות ליצירת קוד של HTML 3.0
:netscape כל הפונקציות המשמשות ליצירת קוד HTML ספציפי ל Netscape
:shortcuts כל הפונקציות של html2, html3 ו- netscape ביחד.
:standard כל הפונקציות של html2, form ו- cgi ביחד.
:all ייבוא של כל הפונקציות הקיימות במודול

תוכנית CGI לדוגמא

התוכנית הבאה מייצרת טופס, ואם הגולש מילא את הטופס, מעבדת את הנתונים ומדפיסה אותם. התוכנית משתמשת בפונקציות מתוך המודוך CGI ליצירת קוד HTML.

#!/usr/bin/perl -w

use CGI qw(:standard);
/*יבוא של הקבוצה standard מהמודול CGI*/
print header, start_html("Welcome to this Form"), h1("This is a simple Form");
/*הדפסת קוד HTML*/
if (param()) {
/*()param היא פונקציה שמחזירה את שמות השדות שמולאו בטופס. אם הטופס ריק היא לא תחזיר כלום*/
     my $who = param("name");
/*קריאה ל param עם שם של שדה, תחזיר את הערך של השדה*/
     print p("Hi, $who, you have filled my form.");
/*הודעה קצרה שמודפסת אם הטופס מולא*/
} else {
/*param ריק אז נציג את הטופס הריק*/
     print hr();
     print start_form();
/*התחלת הטופס*/
     print p("What's your name? ", textfield("name"));
/*יצירת שדה מידע שבו יכניס המשתמש את שמו. שם השדה הוא name*/
     print p(submit("send"), reset("clear"));
/*יצירת כפתורים לשליחה ואיפוס של הטופס*/
    print end_form(), hr();
}
print end_html;









להוספת תגובה, אנא התחברו לדרכונט.