וובמאסטר - תיכנות ובניית אתרים

מדריך PHP: משתני צד שרת ומשתנים סופר גלובליים

רן בר-זיק ,‏ אינטרנט ישראל‏ ‏/‏ 24 פברואר, 2011
F+
F-

משתני super global

אני בטוח ששמתם לב שיש מכנה משותף ל- $_GET, $_POST, $_REQUEST, $_COOKIE, $_SESSION שלמדנו עליהם במאמרים הקודמים. בין כל המשתנים האלו יש דמיון, כולם מערכים אסוציאטיבים, כולם מכילים מידע חיצוני. המשתנים האלו נקראים משתנים סופר גלובאליים. משתנים אלו זמינים, בדרך כלל תמיד, ומכילים נתונים שונים שחלקם קשורים לסקריפט שלנו וחלקם קשורים לשרת.

GLOBAL

מדובר במערך שמכיל את כל המשתנים הגלובליים (אלו שמוגדרים מחוץ לפונקציה). במאמר המסביר על פונקציה דיברנו על משתנים גלובליים ומשמעותם. אם קראתם היטב, הבנתם שמשתנה גלובלי הוא משתנה שהוגדר מחוץ לפונקציה ואם אנו רוצים להשתמש בו בעולמה הסגור והמבודד של הפונקציה, אנו צריכים לכתוב לפניו global. באמצעות משתנה GLOBAL$ אנו יכולים לקבל מערך אסוציאטיבי של כל המשתנים הגלובליים.

הנה דוגמא קלה להבהרת המסר:

<?php
function test() {
    $my_var = "local variable";

    print '$my_var in global scope: ' . $GLOBALS['my_var'];
    print '<br />';
    print '$my_var in current scope: ' . $my_var;
}

$my_var = "global variable";
test();

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

SERVER_$

מדובר במערך אסוציאטיבי עם פרטים שונים ומשונים על השרת. ואני מתכוון להמון פרטים. רוצים לדעת כמה? תבצעו print_r באופן הבא:

<?php
print_r($_SERVER);

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

view source on SERVER super global

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

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

$_SERVER['OS']

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

$_SERVER['HTTP_USER_AGENT']

מערכת ההפעלה של המשתמש (הגולש), נסו להדפיס את המשתנה הזה ולהכנס אל ה-IIS עם דפדפנים שונים:

<?php
print $_SERVER['HTTP_USER_AGENT'];

עם אינטרנט אקספלורר 9:

user agent of IE9

עם פיירפוקס 3.6:

user agent of FF

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

$_SERVER['REQUEST_URI']

זה משתנה שמראה לנו את ה-URI שאותו המשתמש ביקש. ההבדל בין URI ל-URL הוא בכך ש-URI מפרט בדרך כלל את הפרוטוקול (ftp,http וכו') שבו אנו משתמשים. מבחינת השימוש היומיומי, בוודאי למתחילים, אין שום הבדל. ה-URI שאנו מבקשים הוא שם הדף + פרמטרים שונים.

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

רן בר-זיק, אינטרנט ישראל

מתכנת PHP מנוסה ובעל ידע רב בפיתוח לאינטרנט על בסיס LAMP. מומחה במערכות דרופל, ג'ומלה ו-וורדפרס. שולט היטב בכל מה שקשור לפרונט אנד: JavaScript: jQuery ו-MooTools,ActionScript 2/3 וכמובן HTML 5 + CSS 3.

אינטרנט ישראל: www.internet-israel.com
תגיות: PHP‏  /  מדריך‏  /  משתנים‏  

תגובות בפייסבוק

תגובות למאמר



עוד במדריך

תגיות פופולאריות

X
הצטרף לעמוד שלנו בפייסבוק להישאר מעודכן!
וובמאסטר © כל הזכויות שמורות