PHP The Fourth Day                                       ðào Quang Minh        Trung tâm Tính toán Hi u năng cao – ðHBK Hà...
Chương 3: PHP và MySQL1. Các bư c truy c p CSDL2. SQL Injection
Các bư c truy c p cơ s d li u
T o k t n i ñ n Database Server$bi n_k t_n i =mysql_connect(“máy_ch ”,“tên”,“m t_kh u”)or die(“Không k t n i ñư c”);Hàm di...
L a ch n cơ s d li umysql_select_db(“Tên CSDL”)or die (“Chưa có CSDL”);mysql_select_db(“coursek50”);
Vi t truy v n$bi n = mysql_query(“L nh SQL”)or die(“Không th c hi n ñư c SQL”);$sql = mysql_query(“Select * Fromaccount Wh...
Các hàm h trmysql_affected_rows(): S b n ghi b tácñ ng b i l nh mysql_query li n trư cmysql_num_rows(): K t qu s b n ghic ...
Các hàm x lý k t qumysql_fetch_array($sql): tr v m t dòngb n ghi dư i d ng m t m ng v i ch m cd ng s ho c tên c a trư ng.m...
SQL Injuction
Th nào là SQL InjectionLà m t k thu t cho phép nh ng k t ncông thi hành các câu l nh truy v n SQLb t h p phápB ng cách l i...
Ví d$sql=mysql_query(“Select * Fromaccount Where username = ‘$user’ Andpassword = ‘$pass’”)N u như User nh p bi n User là:...
(ti p)$sql=“Insert Into table_name  Values(‘$val1’,’$val2’,’$val3’)”; N u như các bi n val1 thành như sau: ‘ + (Select Top...
Cách phòng tránhSQL Injection khai thác nh ng b t c n c acác l p trình viên phát tri n ng d ng webkhi x lý d li u nh p vào...
(ti p)Ki m soát ch t ch d       li u nh p vào– Gi i h n chi u dài c a chu i nh p li u– Xây d ng hàm thay th d u 1 nháy ñơn...
Ví dHàm length ñ gi i h n ñ dàiHàm thay th ‘ thành ‘‘function replace($input){    $output = str_replace("","",$input);    ...
(ti p)Hàm lo i b các kí t          không mong mu nfunction killchar($input){    $len = strlen($input);    $char = array("s...
L p trình AJAX
Gi i thi uAJAX = Asynchronous JavaScript And XMLAJAX không ph i là ngôn ng m i mà làm t cách m i s d ng các ngôn ng ñãcó.A...
ð c ñi m AJAXLà công ngh c a web browser. ð c l pv i web server.S d ng JavaScript ñ g i và nh n d   li ugi a client và ser...
So sánh             Click –Wait-And-RefreshAjax based
Truy xu t d    li u t   server trong JavaScriptV i IE6: s     d ng Msxml2.XMLHTTP:XMLHttp =   new ActiveXObject("Msxml2.XM...
Mã l nh t ng quátfunction GetXMLHttpObject(){   var oXMLHttp=null   try{        oXMLHttp=new ActiveXObject("Msxml2.XMLHttp...
ð i tư ng XMLHttpRequestCác phương th c– open(“method,”url”): Thi t l p yêu c u ñ n  server (ñ a ch trang c n k t n i ñ n)...
(ti p)responseXML Response tr v t serverdư i d ng XML. ð i tư ng này có th ñư cphân tách và kh o sát như m t ñ i tư ngtài ...
Thu c tính readyStatereadyState=0: Chưa kh i t o: sau khi t o ñ itư ng XMLHttpRequest nhưng chưa g i open().readyState=1: ...
Quá trình tương tác1. M t event client-side gây ra 1 s ki n –   Ajax event. B t kỳ m t tác ñ ng nào   cũng có th gây ra Aj...
(ti p)2. M t th hi n c a XMLHttpRequest ñư c   t o ra:  –   dùng phương th c open()  –   t o l i g i hàm  –   ñ a ch URL ñ...
(ti p)var xmlHttp;function validateEmail() {var email = document.getElementById("email");var url = "validate?email=" + esc...
(ti p)3. M t request ñư c t o và g i ñ n server4. Server x lý yêu c u (truy c p cơ s d   li u, tác v h th ng...)5. Respons...
(ti p)6. C u hình XMLHttpRequest ñ g i hàm   callback() khi k t qu x lý ñư c tr v  function callback() {    if (xmlHttp.re...
Upcoming SlideShare
Loading in...5
×

Php day4

306

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
306
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Php day4

  1. 1. PHP The Fourth Day ðào Quang Minh Trung tâm Tính toán Hi u năng cao – ðHBK Hà N i minh0302@gmail.com http://hpcc.hut.edu.vn/~minhdq
  2. 2. Chương 3: PHP và MySQL1. Các bư c truy c p CSDL2. SQL Injection
  3. 3. Các bư c truy c p cơ s d li u
  4. 4. T o k t n i ñ n Database Server$bi n_k t_n i =mysql_connect(“máy_ch ”,“tên”,“m t_kh u”)or die(“Không k t n i ñư c”);Hàm die(“Chu i”): ðưa ra thông báo và k tthúc.V i cách vi t trên, die ch th c hi n khi l nhtrư c nó không thành công$cnn =mysql_connect(“localhost”,”coursek50”,”123456”);
  5. 5. L a ch n cơ s d li umysql_select_db(“Tên CSDL”)or die (“Chưa có CSDL”);mysql_select_db(“coursek50”);
  6. 6. Vi t truy v n$bi n = mysql_query(“L nh SQL”)or die(“Không th c hi n ñư c SQL”);$sql = mysql_query(“Select * Fromaccount Where username = ‘coursek50’”);
  7. 7. Các hàm h trmysql_affected_rows(): S b n ghi b tácñ ng b i l nh mysql_query li n trư cmysql_num_rows(): K t qu s b n ghic a câu l nh mysql_querymysql_error(): Thông báo l i (n u có)mysql_errno(): Mã l i
  8. 8. Các hàm x lý k t qumysql_fetch_array($sql): tr v m t dòngb n ghi dư i d ng m t m ng v i ch m cd ng s ho c tên c a trư ng.mysql_fetch_row($sql): tr v k t qu làm t m ng có th t (b t ñ u t 0)mysql_fetch_assoc($sql): tr v k t qu làm t m ng ñư c ñánh ch s b ng tênTham kh o t i: http://vn2.php.net/mysql
  9. 9. SQL Injuction
  10. 10. Th nào là SQL InjectionLà m t k thu t cho phép nh ng k t ncông thi hành các câu l nh truy v n SQLb t h p phápB ng cách l i d ng l h ng trong vi cki m tra d li u nh p trong các ng d ngweb
  11. 11. Ví d$sql=mysql_query(“Select * Fromaccount Where username = ‘$user’ Andpassword = ‘$pass’”)N u như User nh p bi n User là: “OR 1 ORuser=“ thì câu l nh SQL s là:SELECT * FROM users WHERE user = "" OR 1OR user="" AND password = "$password“ Và k t qu tr v s là toàn b user trong cơ sd li u
  12. 12. (ti p)$sql=“Insert Into table_name Values(‘$val1’,’$val2’,’$val3’)”; N u như các bi n val1 thành như sau: ‘ + (Select Top 1 Fieldname From TableName) +’ Insert Into TableName Values(‘’ + Select Top 1 FieldName From TableName)+ ‘’,’$val2,’$val3’)
  13. 13. Cách phòng tránhSQL Injection khai thác nh ng b t c n c acác l p trình viên phát tri n ng d ng webkhi x lý d li u nh p vàoTùy vào môi trư ng và cách c u hình hth ng mà tác h i là n ng hay nh
  14. 14. (ti p)Ki m soát ch t ch d li u nh p vào– Gi i h n chi u dài c a chu i nh p li u– Xây d ng hàm thay th d u 1 nháy ñơn b ng 2 d u nháy ñơn– Xây d ng hàm lo i b m t s kí t và t khóa nguy hi m– Dùng hàm addslashes ñ thêm “” vào trư c chu i nh p vào
  15. 15. Ví dHàm length ñ gi i h n ñ dàiHàm thay th ‘ thành ‘‘function replace($input){ $output = str_replace("","",$input); return $output;}
  16. 16. (ti p)Hàm lo i b các kí t không mong mu nfunction killchar($input){ $len = strlen($input); $char = array("select","drop",";","-- ","insert","delete","xp_"); $output = str_replace($char,"",$input); return $output;}
  17. 17. L p trình AJAX
  18. 18. Gi i thi uAJAX = Asynchronous JavaScript And XMLAJAX không ph i là ngôn ng m i mà làm t cách m i s d ng các ngôn ng ñãcó.AJAX giúp ta t o các trang web nhanhhơn, ti n l i hơn, thân thi n hơn khi sd ng.AJAX là t p h p c a nhi u công ngh v ith m nh c a riêng mình ñ t o thànhm t s c m nh m i
  19. 19. ð c ñi m AJAXLà công ngh c a web browser. ð c l pv i web server.S d ng JavaScript ñ g i và nh n d li ugi a client và server.AJAX d a trên:– JavaScript– XML– HTML– CSSAJAX s d ng XML và HTTP Request
  20. 20. So sánh Click –Wait-And-RefreshAjax based
  21. 21. Truy xu t d li u t server trong JavaScriptV i IE6: s d ng Msxml2.XMLHTTP:XMLHttp = new ActiveXObject("Msxml2.XMLHTTP")V i IE5.6: s d ng Microsoft.XMLHTTPXMLHttp = new ActiveXObject("Microsoft.XMLHTTP")V i trình duy t khác: XMLHttpRequestXMLHttp=new XMLHttpRequest()
  22. 22. Mã l nh t ng quátfunction GetXMLHttpObject(){ var oXMLHttp=null try{ oXMLHttp=new ActiveXObject("Msxml2.XMLHttp") } catch(e){ try{ oXMLHttp=new ActiveXObject("Microsoft.XMLHttp") } catch (e){} } if (oXMLHttp==null) oXMLHttp=new XMLHttpRequest() return oXMLHttp;}
  23. 23. ð i tư ng XMLHttpRequestCác phương th c– open(“method,”url”): Thi t l p yêu c u ñ n server (ñ a ch trang c n k t n i ñ n)– send(content): G i yêu c u ñ n server.– abort(): H y yêu c u hi n t iCác thu c tính– readyState: Tr ng thái hi n t i c a ñ i tư ng.– onreadystatechange: B x lý s ki n cho m t s ki n phát sinh khi có thay ñ i tr ng thái– responseText: Chu i d li u tr v .
  24. 24. (ti p)responseXML Response tr v t serverdư i d ng XML. ð i tư ng này có th ñư cphân tách và kh o sát như m t ñ i tư ngtài li u DOM.status Mã tr ng thái HTTP t server(ch ng h n 200 n u không có l i, 404 chol i Not Found, …).statusText Thông ñi p c a mã tr ng tháiHTTP (ch ng h n OK hay Not Found, …)
  25. 25. Thu c tính readyStatereadyState=0: Chưa kh i t o: sau khi t o ñ itư ng XMLHttpRequest nhưng chưa g i open().readyState=1: V a kh i t o: sau khi g i open()nhưng chưa g i send().readyState=2: V a g i ñi: ngay sau khi g isend().readyState=3: ðang x lý: sau khi k t n i ñ nserver nhưng server chưa tr l i.readyState=4: Xong: sau khi server tính toánxong, d li u ñã g i v xong.
  26. 26. Quá trình tương tác1. M t event client-side gây ra 1 s ki n – Ajax event. B t kỳ m t tác ñ ng nào cũng có th gây ra Ajax event <input type="text" id="email" name="email" onblur = "validateEmail()";>
  27. 27. (ti p)2. M t th hi n c a XMLHttpRequest ñư c t o ra: – dùng phương th c open() – t o l i g i hàm – ñ a ch URL ñư c thi t l p cùng v i phương th c Http ñư c yêu c u – request ñư c t o ra qua vi c g i send()
  28. 28. (ti p)var xmlHttp;function validateEmail() {var email = document.getElementById("email");var url = "validate?email=" + escape(email.value);if (window.ActiveXObject) {xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");}else if (window.XMLHttpRequest) {xmlHttp = new XMLHttpRequest();}xmlHttp.open("GET", url);xmlHttp.onreadystatechange = callback;xmlHttp.send(null);}
  29. 29. (ti p)3. M t request ñư c t o và g i ñ n server4. Server x lý yêu c u (truy c p cơ s d li u, tác v h th ng...)5. Response ñư c tr v cho trình duy t (x lý d ng text/xml) header(Content-Type: text/xml);
  30. 30. (ti p)6. C u hình XMLHttpRequest ñ g i hàm callback() khi k t qu x lý ñư c tr v function callback() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { //do something interesting here } } }
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×