logo


פרק 2: קישור Perl לעמודי הרשת

מבט על המשתנים הסביבתיים (Environment Variables)

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

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

קחו לדוגמא את משתנה הסביבה הנקרא HTTP_USER_AGENT. משתנה זה מחזיר את סוג הדפדפן ואת מערכת ההפעלה ממנה המשתמש ניגש לאתר. לפיכך הערך "Mozilla/4.51 [en] (Win98; I)" משמעותו היא שהמבקר השתמש בקומיוניקיטור של נטסקייפ גרסה 4.51 (המזדהה בתור Mozilla), בגרסה האנגלית, המותקנת על חלונות 98. דפדפנים שונים מזהים עצמם באופן שונה כך שאין אף תבנית שבעזרתה ניתן לזהות את כל סוגי הדפדפנים. בדרך כלל קוראים את ה AGENT של המשתמש על מנת לזהות או לתעד את סוג הדפדפן או מערכת ההפעלה שלו...לעיתים בכדי להפנות את המשתמש לעמוד מסוים (דוגמא לכך נראה בקרוב) או לשגר אליו הודעה מסוימת.

$ENV{'HTTP_USER_AGENT'}
yields Mozilla/4.51 [en] (Win98; I)
$cgiobject->user_agent();
yields Mozilla/4.51 [en] (Win98; I)

בדוגמא שלנו, אנו יכלים לרצות להוסיף את המידע השמור בתוך ה AGENT ליומן רישום של המשתמשים שביצעו רישום, דבר זה יאפשר לנו לזהות את הדפדפן ומערכת ההפעלה בה משתמשים הנרשמים שלנו, בלא לדרוש הקלדת מידע זה. ישנן שתי דרכים לגשת למשתנה ה CGI הסביבתי מתוכנית Perl, כאשר אף אחת מדרכים אלו אינה עולה על השניה:

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

אנו יכולים לשנות בקלות את קוד תוכנית יומן הרישום שלנו על מנת להכניס את נתוני ה agent לתוך בסיס הנתונים שאנו יוצרים:


$useragent=$cgiobject->user_agent();

print LOGFILE 
"$username\t$userphone\t$usermail\t$userZIP\t$useragent\n";

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

משתני CGI סביבתיים נפוצים

 

אמינות

תאור

CGIמתודת אובייקט ה

$ENV{'Variable'}

המשתנה הסביבתי

גבוהה

מספר התווים בשאלתה המועברים לשרת באמצעות פקודת ה POST

אין CONTENT_LENGTH
גבוהה

סוג ה MIME (תקן המאפשר להעביר כל סוג של קובץ) של השאלתה הנשלחת בעזרת מתודת ה POST, כגון text/html

אין CONTENT_TYPE
נמוכה

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

user_name HTTP_FROM
גבוהה

בדרך כלל כתובת ה URL של העמוד ממנו נשלחה שאילתת ה CGI

referer HTTP_REFERER
גבוהה

סוג הדפדפן ומערכת ההפעלה ממנה נשלחה השאילתה

user_agent HTTP_USER_AGENT
גבוהה

מחרוזת השאילתה שהועברה לשרת דרך מתודת ה GET; המחרוזת העוקבת לתו ה ? ב URL המכילה את המפתחות והערכים המועברים לסקריפט ה CGI

אין

QUERY_STRING

טובה

מספר ה IP של המחשב ממנו נשלחה השאילתה. באובייקט ה CGI המותודה מחזירה את כתובת ה IP אם אינה מסוגלת לקבוע את שם השרת

remote_host REMOTE_ADDR
בינונית

שם השרת (לדוגמא: "dweezil.zappa.com") של המחשב ממנו נשלחה השאילתה. באובייקט ה CGI, אם השם לא ידוע מוחזרת כתובת ה IP.

remote_host REMOTE_HOST
גבוהה

האם השאילתה נשלחה דרך מתודות ה GET, POST, או HEAD

request_method REQUESTE_METHOD

יומן רישום
תוכן עניינים
מעקף: הפניה מחדש

אודות
תוכן עניינים
פרק 1: ה Perl שאתם צריכים לדעת
פרק 2: קישור Perl לעמודי הרשת
התאמת מחרוזות ב Perl ביטויים רגולריים  
CGI ותכנות מונחה עצמים ב Perl  
הערות בקשר להרצת CGI  
CGI ותכנות מונחה עצמים ב Perl: קלט  
CGI ותכנות מונחה עצמים ב Perl: פלט  
בדיקת טפסים  
יומן רישום  
מבט על משתנים סביבתיים  
מעקף: הפניה מחדש (redirection)  
סיכום  
פרק 3: שמירת מצב
פרק 4: HTML בחטף ותבניות (Templates) רשת
פרק 5: עיבוד וניתוח של עמודי רשת
פרק 6: להשתעשע עם בסיסי נתונים מקוונים:אקסס
פרק 7: המודל MySQL
פרק 8: להשתעשע בבסיסי נתונים - GUFE - החזית הכללית והשימושית
פרק 9: המילניום - ניהול זמן ותאריך
פרק 10: ניהול רשימות והאשים (Hashs)
פרק 11: הפניה להפניה
פרק 12: הכרות עם mod_perl