Դաս 74.1 – PHP։ Prepared Statements

0

Նախորդ բաժնում մենք ծանոթացանք դատաբազային նոր record (գրառում) ավելացնելու տարբերակներից մեկին՝ INSERT  հայտարարության միջոցով՝

$SQL = “INSERT INTO tbl_address_book (First_Name, Surname, Address) VALUES (‘Paul’, ‘McCartney’, ‘Penny Lane’)”;

Այնուամենայնիվ, վերոնշյալ SQL-ը օգտագործում է hard-coded արժեքներ (‘Paul’, ‘McCartney’, ‘Penny Lane’): Սակայն, սովորաբար, Դուք ունենում եք textbox-եր, որտեղ մարդիկ կարող են տվյալներ լրացնել: Կոճակը սեղմելիս այս արժեքները օգտագործվում են  SQL հայտարարության մեջ նոր record ավելացնելու համար: Սակայն մինչ նոր record կատարել սովորելը մենք կանդրադառնանք Prepared Statement-ներին:

Ինչպես արդեն նշեցինք, շատ հաճախ մեզ անհրաժեշտ են լինում textbox-եր, որտեղ մարդիկ կլրացնեն իրենց գաղտնաբառերը, email-ները և այլն: Այնուհետև Դուք ստանում եք այդ արժեքները HTML Form-ից և աշխատում դրանց հետ:

Prepared Statements

Երբ Դուք օգտվողներին խնդրում եք լրացնել տվյալները textbox-ում և սեղմել կոճակը, Դուք բացում եք դատաբազան գործողություններ կատարելու համար, մասնավորապես SQL Injection-ի համար: Օրինակ տեսեք այս SQL Statement-ը՝

$SQL = “SELECT * FROM members WHERE email = ‘$email’ “;

Այստեղ մենք նշում ենք դատաբազայի members կոչվող աղյուսակի  բոլոր record-ները: Նշված $SQL հրահանգի մեջ ունենք WHERE սահմանափակումը։ Այն կիրառվում է այն ժամանակ, երբ Դուք ցանկանում եք սահմանափակել արդյունքները միայն Ձեզ անհրաժեշտ record-ներով: “WHERE” բառից հետո պետք է գրել  դատաբազայի column name-ը (մեր դեպքում՝ email-ը):  Այնուհետև պետք է դնեք հավասարության նշան, որին պիտի հետևի այն արժեքը, որը ցանկանում եք ստուգել: Այն գալիս է $email կոչվող փոփոխականից և դրված է չակերտների մեջ:

Երբ որ email հասցեն գրվում է մեր form-ի text box-ում այդ արժեքն անմիջապես գնում է դեպի փոփոխականը առանց որևէ ստուգումների: Հարձակում գործողը կարող է որևէ այլ բան գրել textbox-ի մեջ՝ փորձելով մանիպուլյացիայի ենթարկել Ձեր SQL հայտարարությունը:

Հարձակում գործողը կարող է ավելացնել DELETE մասնիկը, որպեսզի ջնջի դատաբազայի record-ների մի մասը կամ DROP clause , որպեսզի ջնջի ամբողջ դատաբազան: Կան բազմաթիվ տարբերակներ, որոնց միջոցով հարձակում գործողը կարող է Ձեր կոդի մեջ SQL կիրառել:

Որպեսզի խուսափեք դրանից, պետք է օգտագործել Prepared Statement:

Հարգելի ընթերցող, խնդրում ենք չմոռանալ like տալ մեր ֆեյսբուքյան էջին, քանի որ նորությունների մեծ մասը առաջինը տեղադրվում է հենց այնտեղ։ Ինչպես նաև հետևեք մեզ այլ սոցիալական ցանցերում և, իհարկե, գրանցվեք մեր բլոգում։

Share.