Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Php day4

1,054 views

Published on

  • Be the first to comment

  • Be the first to like this

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 } } }

×