|
Shuningdek, O’zbekiston Prezidenti 7-fevral kungi farmoni bilan 2017
|
bet | 8/24 | Sana | 20.05.2024 | Hajmi | 67,89 Kb. | | #246484 |
Bog'liq Shuningdek, O’zbekiston Prezidenti 7-fevral kungi farmoni bilan -hozir.orgMisol Ilovalar :
$order = isset($_GET['order']) ? $_GET['order'] : ''; // просто для полноты кода
$sort = isset($_GET['sort']) ? $_GET['sort'] : '';
$allowed = array("name", "price", "qty"); //перечисляем варианты
$key = array_search($sort,$allowed); // ищем среди них переданный параметр
$orderby = $allowed[$key]; //выбираем найденный (или, за счёт приведения типов - первый) элемент.
$order = ($order == 'DESC') ? 'DESC' : 'ASC'; // определяем направление сортировки
$query = "SELECT * FROM `table` ORDER BY $orderby $order"; //запрос 100% безопасен
Identifikatorlar uchun to'ldiruvchi etarli deb o'ylardim . Ammo vaqt o'tishi bilan ushbu usulning kamchiliklari haqida tushuncha paydo bo'ldi:
birinchidan, maydon nomi noto'g'ri bo'lsa, so'rov xatolikka olib keladi. Va xatolar har doim yomon.
ikkinchidan, va bundan ham muhimi: agar siz maydon nomlarini oldindan filtrlashsiz avtomatik ravishda almashtirsangiz, faqat ulardan qochish orqali siz boshqa turdagi in'ektsiyani olishingiz mumkin - axir, foydalanuvchi keyin o'zi kerak bo'lmagan maydon nomlarini kiritishi mumkin. o'zgartirish! Aytaylik, agar $_POST massivi asosida avtomatik ravishda SQL so‘rovini shakllantirsak (maydon nomlarini to‘g‘ri formatlashda!), u holda xaker ro‘yxatdan o‘tish vaqtida formaga “1” qiymatiga ega admin maydonini qo‘shib, administratorga aylanadi.
Endi men ikkala usuldan ham foydalanaman:
avval oq ro‘yxatdagi identifikatorni olaman, keyin esa uni qo‘lda formatlashim shart bo‘lmasligi uchun uni to‘ldiruvchi orqali qo‘shaman. Va bir xillik uchun. Bunday holda, oxirgi qator o'xshash bo'ladi
$query = "SELECT * FROM `table` ORDER BY n: $order";
Aslida, bu ma'lumot butunlay xavfsiz so'rovlarni yozishni boshlash uchun etarli. Lekin, odatdagidek, haqiqiy hayotda turli xil nuances sodir bo'ladi va men to'ldiruvchilarning mexanizmi bilan batafsilroq shug'ullanishni xohlayman.
|
| |