|
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\WebServ\domains\sqlinj\index1.php on line 16
|
bet | 3/24 | Sana | 20.05.2024 | Hajmi | 67,89 Kb. | | #246484 |
Bog'liq Shuningdek, O’zbekiston Prezidenti 7-fevral kungi farmoni bilan -hozir.orgWarning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\WebServ\domains\sqlinj\index1.php on line 16
Agarda hatolik chiqmasa, quyidagi sabablar bo`lishi mumkin:
1.SQL in'ektsiyasi Bu yerga yo'q - filtrlangan qo`shtirnoq belgilari yoki oddiygina (int)ga almashtiruvchi o`rnatilgan
2. Xatolar chiqarilishi o`chirilgan.
Agar shunga qaramay, xato ko'rsatilsa. Biz SQL in'ektsiyasining birinchi turini topdik - Raqamli kiritish parametri.
Qatorli kiritish parametri
So'rovlar index2.php ga yuboriladi . Ushbu faylda so'rov quyidagicha ko'rinadi:
$user = $_GET['user'];
$query = "SELECT * FROM news WHERE user='$user'";
Bu yerda biz foydalanuvchi nomi boʻyicha yangiliklarni tanlaymiz va yana uni filtrlamaymiz, yana taklif bilan soʻrov yuboramiz:
sqlinj/index2.php?user=AlexanderPHP'
Xato berdi. OK! Shunday qilib, zaiflik mavjud. Boshlash uchun etarli - keling, mashg'ulotlarga o'taylik.
Amalga o`tamiz
Bir oz nazariya
Ehtimol, siz xatolardan tashqari, bundan biror narsa chiqarishni kuta olmaysiz. Birinchidan, belgi ekanligini tushuning " -- " SQL tilida izoh hisoblanadi.
DIQQAT! Undan oldin va keyin boʻsh joy boʻlishi kerak. URLda ular %20 sifatida uzatiladi.
Sharhdan keyin hamma narsa oʻchiriladi. Yaʼni soʻrov:
SELECT * FROM news WHERE user='AlexanderPHP' – habrahabra
muvaffaqiyatli ishlaydi, siz buni index2.php skriptida quyidagi so'rovni yuborish orqali sinab ko'rishingiz mumkin:
sqlinj/index2.php?user=AlexanderPHP'%20--%20habrahabr
UNION parametrini bilib oling . SQLda UNION kalit so'zi ikkita SQL so'rovi natijalarini bitta jadvalga birlashtirish uchun ishlatiladi. Ya'ni, bizga kerak bo'lgan narsani boshqa stoldan tortib olish uchun.
Ushbu ma`lumotgan foyda tomonini olamiz
Agar parametr "Raqamli" bo'lsa, so'rovda biz taklifni yuborishimiz shart emas va tabiiy ravishda oxirida sharh qo'yamiz. Keling, index1.php skriptiga qaytaylik .
Keling, sqlinj/index1.php?id=1 UNION SELECT 1 skriptiga murojaat qilaylik . Biz ma'lumotlar bazasiga quyidagi so'rovni olamiz:
SELECT * FROM news WHERE id=1 UNION SELECT 1
Va u bizga xatolik berdi, chunki so'rovlarni yig'ish bilan ishlash uchun bizga bir xil miqdordagi maydonlar kerak.
Chunki Birinchi so'rovda ularning soniga ta'sir o'tkaza olmaganimiz uchun, ikkinchisida ularning raqamini birinchisiga teng bo'lishi uchun tanlashimiz kerak.
|
|
Bosh sahifa
Aloqalar
Bosh sahifa
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\WebServ\domains\sqlinj\index1.php on line 16
|