filter_input – דרך טובה הרבה יותר לקבלת משתני GET או POST

לא מעט מתכנתים משתמשים ב-GET_$ או POST_$ כאשר הם רוצים לקבל פרמטרים של GET או POST. מדובר במשתנים גלובליים שמכילים את כל הפרמטרים. למשל, אם אני רוצה לקבל את הפרמטר myparam מהכתובת http://example.com?myparam=value, אני אכתוב את הקוד הבא:


$_GET['myparam'];

או:


$_REQUEST['myparam'];

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

איך משתמשים בה? מאד פשוט! אם אני רוצה לקבל פרמטר GET של myparam זה מה שאני צריך להכניס:


filter_input(INPUT_GET, 'myparam');

מה היתרון הגדול של filter_input? שאני יכול להכניס גם פילטרים של PHP כפרמטר השלישי! למה צריך להכניס פילטרים? כדי לפלטר או לעשות סניטציה לפרמטר. כך למשל:


filter_input(INPUT_GET, 'myparam', FILTER_SANITIZE_EMAIL);

מבצע מיד סניטציה בפרמטר GET של מייל. אני יכול גם לפלטר ולא רק לעשות סניטציה. היתרון הגדול ב-filter_input הוא שמאד מאד קל להשתמש בפילטרים השונים. ואם קל להשתמש בהם, גם הסיכוי שאנחנו נשתמש בהם עולה.
ניתן להשתמש בפונקציה הזו כדי לקבל משתני שרת (SERVER_$) או משתני סביבה ולפלטר גם אותם. חלק מכם בוודאי ישאלו למה צריך לפלטר משתני שרת? התשובה היא שניתן לשנות חלק ממשתני השרת – כמו למשל ה-Referrer ואם אנחנו משתמשים בהם בסקריפט שלנו או כותבים אותם למסד הנתונים שלנו, תוקף מיומן מספיק יכול להשתמש בהם כנקודת תורפה לחדירה אל הסקריפט שלנו. אם נשתמש ב-filter_input במקום המערכים הגלובליים, אנחנו פשוט נתרגל לפלטר או לעשות סניטציה לכל פרמטר ופרמטר – גם אם אנחנו חושבים שהוא בטוח.

מבחינת מהירות או יעילות, אין הבדל ממשי – אבל מבחינת בטיחות, כדאי הרבה יותר להשתמש בזה.

מידע נוסף ודוגמאות נוספות ל-filter_input נמצאות בדוקומנטציה של PHP.

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

אהבתם? לא אהבתם? דרגו!

לא אהבתי בכלללא אהבתיבסדראהבתיאהבתי מאוד (אין הצבעות)

תגיות: פורסם בקטגוריה: פתרונות ומאמרים על פיתוח אינטרנט

אל תשארו מאחור! יש עוד מה ללמוד!

הצטרפו לעדכונים!

העדכונים נשלחים אך ורק כאשר האתר מתעדכן.

רן בר-זיק

רן בר-זיקכותב כל המאמרים באינטרנט ישראל, מפתח אינטרנט מנוסה במגוון שפות ופלטפורמות.
ניתן ליצור איתי קשר באמצעות:
כתובת המייל שלי: info@internet-israel.com.
פרופיל הלינקדאין שלי

הטוויטר שלי

פרופיל הפייסבוק שלי

אני תמיד שמח לייעץ ולעזור, אך בשל עומס הפניות הרב, אני לא תמיד מצליח לענות במהירות.