ציטוט:
נכתב במקור על ידי Tomer
PHP קוד:
$pagenum = mysql_escape_string($_GET['pagenum']);
$pagenum = (int)$pagenum;
לא רואה סיבה למניפולציות ארוכות יותר על המשתנה
|
mysql_escape_string לא נחוץ פה אם בכל מקרה אתה ממיר את ערך המשתנה ל-int.
אגב עדיף לעשות שימוש ב-real_escape, או בכלל לעבור לשימוש בPDO.
ציטוט:
נכתב במקור על ידי xPerfection
תומר, זה בדיוק מה שלא נחוץ לעשות (וזאת הסיבה שציינתי את 2 הקישורים בתגובה שלי).
במקרה הזה - כאשר אנחנו מצפים לקלט שהוא מספר שלם, אנחנו נקבל אותו אך ורק אם הוא מספר שלם, אין שום סיבה לבצע עליו סינון כלשהו (ובטח שלא להמיר אותו למספר).
צריך לבצע אימות די פשוט:
אם הקלט הוא מספר שלם, ממשיכים, אם לא - אין סיבה להמשיך.
(בהתאם למקרה) אם המספר גדול מ- 0, ממשיכים, אם לא - אין סיבה להמשיך.
ההמשך ידוע.
|
מה שמצחיק פה זה שבכל מקרה עדיף לבצע סינון.
והנה הדוגמה:
PHP קוד:
<?php
if(isset($_GET['page'])) {
is_int($_GET['page']) ? $page = $_GET['page'] : $page = 1;
}
PHP קוד:
<?php
if(isset($_GET['[page'])) {
$page = (int) $_GET['page'];
}
מבחינת זמן ביצוע לדעתי הintval יהיה מהיר יותר במקרה הזה, ובכל מקרה תקבל ערך שהוא מספר.