פילטור קלט ב-PHP

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

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

ב-PHP מגרסה 5 יש לנו דרך נפלאה להריץ פילטרים – באמצעות PHP filters. איך משתמשים בהם? הכי טוב עם דוגמה מאד מאד פשוטה (ותסלחו לי שאני משתמש בדוגמה כזו) :


$email = $_GET['email'];
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {		
	print 'Email OK!';
} else {
	print 'Email is not OK';
	die;
}

מוקד העניין הוא פונקצית filter_var שמקבלת שני פרמטרים – מחרוזת טקסט כלשהי וקבוע כלשהו שלפי שמו אפשר להבין שהוא הוא הפילטר שלנו שבמקרה הזה מפלטר לפי מייל (ואם לא הבנתם ש-FILTER_VALIDATE_EMAIL מפלטר מייל, סימן שאתם במקצוע הלא נכון). במידה והפילטור עובר תקין, מוחזר לנו TRUE ובמידה ולא, מוחזר FALSE. מה אנחנו עושים? זה כבר תלוי בסקריפט שלנו.

נשאלת השאלה אילו עוד פילטרים יש חוץ מ-FILTER_VALIDATE_EMAIL? רשימה מלאה של הפילטרים נמצאת בדוקומנטציה של PHP וכדאי להציץ בה. בפעם הבאה שאתם מפלטרים פלט, אפשר פשוט להשתמש בפילטרים האלו. אולי החלק הזה של הקוד לא זוהר כמו UI שאפשר להטמיע, אבל הוא חשוב לא פחות.

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

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

לא אהבתי בכלללא אהבתיבסדראהבתיאהבתי מאוד (1 הצבעות, ממוצע: 4.00 מתוך 5)

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

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

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

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

רן בר-זיק

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