PERL/CGI

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
קפיצה לניווט קפיצה לחיפוש

בהנחה שיש לך כבר שרת Apache (או שרת תואם שקורא שורת shebang! - עוד על זה עוד רגע) והתקנת Perl פועלת, זה די פשוט להתחיל להפעיל תוכנית Perl באינטרנט.

ראשית, חייבת להיות לך דרך כלשהי לגשת לתוכנית. כאן נעסוק בנתוני טופס ושליחה, לכן נניח שלקוד הטופס שלך ב-HTML יש מאפיין שאומר ACTION="programname.cgi".

ההגדרה הראשונית[עריכה]

סקריפטים של CGI מתחילים כמו כל תוכנית אחרת של Perl, ב-"shebang", משהו כמו:

 #!/usr/bin/perl

(ראה תכנות פרל/תוכניות ראשונות לפרטים)

הבא טען את מודול CGI:

use CGI;

מודול CGI מקל על העבודה שלנו מכיוון שיש בו פונקציות מתוכנתות מראש לשימוש באינטרנט. לאחר מכן עלינו ליצור ידית ל-CGI – משהו שמאפשר לנו לגשת לפונקציות. אנחנו עושים את זה עם:

 my $query = CGI->new();

המשמעות היא שהמשתנה $query טוען את הפונקציות הסטנדרטיות של CGI.

כעת, כשהתוכנית שלנו מוגדרת באמצעות מודול CGI, היא אמורה להיראות בערך כך:

 #!/usr/bin/perl

use CGI;
 my $query = CGI->new();

אז יש לנו תוכנית, היא פשוט לא עושה כלום עדיין, ולמעשה תגרום לשגיאת שרת כי לשרת אין פלט או מושג איזה סוג פלט להציג גם אם יש לו פלט.

אחזור מידע[עריכה]

לפני שאנחנו אומרים לשרת מה לעשות עם הפלט שלנו, אנחנו צריכים לאחזר את הקלט שלנו. לשם כך, אנו משתמשים במשתנה $query

שהכרזנו קודם לכן. נניח שיש לנו תיבת טקסט בצורה ששמה "שם" ואנחנו רוצים לברר מה הוקלדו שם. לשם כך, שמנו את שורת הקוד הבאה בתוכנית שלנו:

 my $Name = $query->param('Name');

כעת, שורת קוד זו מציגה לנו את הפונקציה param() (עבור "פרמטר"). הפונקציה param() יכולה לעשות לנו לא מעט טריקים שימושיים, כולם דרכים נחמדות לאחזר את המשתנים שלנו. הוא מעבד את כל קידוד ה-HTTP כך שכל מה שאנחנו מקבלים הוא משתנה נקי ויפה. הערה נוספת, אינך נדרש להשתמש ב-$Name בתור המשתנה שלך. פשוט יותר נוח לזכור רק שם אחד עבור אותו משתנה. ובכל זאת, השתמש במה שהכי טוב לך.

פלט[עריכה]

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

 print $query->header();

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

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

print "your name is: $name";

הקוד המוגמר[עריכה]

אז יש לנו עכשיו תוכנית שלמה שמעבדת טופס, תוך שימוש בשש שורות קוד בלבד. נכון פרל מעולה? הקוד הסופי נראה כך:

 #!/usr/bin/perl

use CGI;
 my $query = CGI->new();

 my $Name = $query->param('Name');

 print $query->header();

 print "אמרת שהשם שלך הוא: ", $query->escapeHTML($Name);

כשמציגים אותו בפרספקטיבה, אנו יכולים לראות שהמשתנה $query הוא חיבור חשוב מאוד למודול CGI מכיוון שהוא אומר ל-perl שהפונקציה שאתה מפנה אליה שייכת ל-CGI; שוב, אתה יכול להכריז על כל שם משתנה במקום $query כל עוד אתה עקבי, אם כי תמצא מפתחים רבים משתמשים ב-$query או $q . שימו לב גם לשימוש בשיטת escapeHTML כדי למנוע בעיות הזרקת HTML.

הערה אחרונה: ודא שאתה משנה את /usr/bin/perl לנתיב של התקנת ה-perl שלך (בהנחה שזה לא זה) כדי ש-perl יפעל כראוי.

מסגרות[עריכה]

ישנן מספר מסגרות CGI שיעזרו במשימות תכנות נפוצות של CGI: