מסנני PHP - אימות וניקוי

PHP JSON ופונקציות Callback

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

מסנני PHP

מסנני PHP משמשים כדי לחטא ולאמת את נתוני הקלט.

חיטוי: כדי להסיר כל תווים לא חוקיים מנתוני הקלט.

תוקף: תהליך של קביעה אם נתוני הקלט הם בצורה נכונה.

מסנני PHP מוודאים חיטוי ואימות נתונים לפני שליחת הבקשה.

מדוע חיטוי ואימות חשוב?

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

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

הרחבת מסנן PHP

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

מסנן function ב-PHP מחזירה את כל הפונקציות הזמינות בסיומת הסינון.

 <?php
  foreach (filter_list() as $id =>$filter) {
    echo '<tr><td>' . $filter . '</td><td>' . filter_id($filter) . '</td></tr>';
  }
  ?>

מהם המקורות שבהם נדרש סינון נתונים?

המקורות הבאים יכולים להזין נתונים חיצוניים וצריכים סינון.

  • שדות קלט בטופס
  • עוגיות
  • נתונים של שירותי אינטרנט
  • משתני שרת
  • תוצאות של שאילתות מסד נתונים

פונקציית Filter_var ב-PHP

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

כיצד לחטא מחרוזת ב-PHP?

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

<?php
$str = "<h1>Hello World!</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>

כיצד לאמת מספר שלם ב-PHP?

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

<?php
$int = 100;

if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
  echo("Integer is valid");
} else {
  echo("Integer is not valid");
}
?>

הערה: הפונקציה filter_var עם FILTER_VALIDATE_INT מחשיבה 0 כמספר שאינו שלם. לכן, אם אתה צריך לכלול 0 במספרים השלמים, אתה יכול לשנות את התנאי אם בדוגמה לעיל כדי לאפשר את ה-0.

כיצד לאמת כתובות IP ב-PHP?

FILTER_VALIDATE_IP מסנן בודק את כתובת ה-IP החוקית. הפרמטר הראשון הוא כתובת ה-IP והפרמטר השני הוא שם המסנן בפונקציה filter_var.

<?php
$ip = "127.0.0.1";

if (!filter_var($ip, FILTER_VALIDATE_IP) === false) {
  echo("$ip is a valid IP address");
} else {
  echo("$ip is not a valid IP address");
}
?>

כיצד לחטא ולאמת דוא"ל ב-PHP?

filter_var מבצע גם אימות וגם חיטוי של דואר אלקטרוני המועבר כפרמטר שני לפונקציה זו. כדי לחטא את המייל, השתמש FILTER_SANITIZE_EMAIL תחילה עם הפונקציה filer_var, ולאחר מכן עבור אימות דוא"ל, השתמש FILTER_VALIDATE_EMAIL לְסַנֵן. תסתכל על הדוגמה למטה.

<?php
$email = "john.doe@example.com";

// Remove all illegal characters from email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);

// Validate e-mail
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
  echo("$email is a valid email address");
} else {
  echo("$email is not a valid email address");
}
?>

כיצד לחטא כתובת URL ב-PHP?

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

<?php
$url = "https://www.w3schools.com";

// Remove all illegal characters from a url
$url = filter_var($url, FILTER_SANITIZE_URL);

// Validate url
if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
  echo("$url is a valid URL");
} else {
  echo("$url is not a valid URL");
}
?>

מהו חריג וכיצד לזרוק חריגה ב-PHP?

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

חריגים הם דרך יעילה לעצור פונקציה מבלי לייצר תוצאות שגויות בסוף.

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

לנסות בלוק מורכב מבלוק הקוד כדי לאפשר ביצוע. היאבקות בלוק מופעל רק כאשר בלוק ה-try זורק חריג. ניתן לקבל מידע על החריג בבלוק ה-catch באמצעות אובייקט החריגה. תראה את הדוגמה הבאה שבה החלוקה ב-0 חריגים נזרקת ונלכדת בבלוק התפיסה.

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $e) {
  echo "Unable to divide.";
}
?>

להתייחסות מלאה למסננים, ניתן להפנות כאן.

PHP JSON ופונקציות Callback
close

הישאר מעודכן לגבי PHP!

אנחנו לא שולחים ספאם!

en English
X
גלול למעלה