מבוא לתכנות CGI
תכניות CGI משמשות לכתיבת דפי אינטרנט המשלבים קוד HTML עם דרך להעברת מידע בין המשתמש לשרת האינטרנט. לדוגמא, יכולה תוכנית CGI לשמש ליצירת דף טופס (FORM) שמשמש לשליחת מידע מהגולש לשרת האינטרנט, וגם להיפך, תוכנית CGI יכולה להוציא מידע ממאגר נתונים שנמצא על השרת, לעבד אותו ולשלוח אותו לדפדפן של המשתמש.
המודול CGI.pm מכיל בתוכו את כל הפונקציות הדרושות לכתיבת תוכנית CGIת מה שהופך את המשימה של כתיבת תוכנית למשימה פשוטה באמת. המודול אינו תלוי פלטפורמה, ולכן אין צורך לשכתב את התוכנית לפי מערכת ההפעלה שעליה היא רצה. CGI.pm מכיל תיעוד מלא של המודול ושל הפונקציות שבו. מומלץ מאוד לשמור את התיעוד פתוח וזמין בזמן כתיבת תוכנית 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 לתוכנית. זה נעשה ע"י כתיבת השורה הבאה בראש התכנית:
המודול 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 ליצירת קוד 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");
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;
להוספת תגובה, אנא התחברו לדרכונט.