50 เทคนิคการเขียน PHP ให้เร็วและถูกต้อง ตอนที่ 150 (เห็นว่ามันมีประโยชน์เลยเอามาลงให้อ่านกันครับ)
ตอนที่ 2 ครับ ผมดูแล้วบางอันมีซ้ำกันด้วยนะครับ
50 เทคนิคการเขียน PHP ให้เร็วและถูกต้อง ตอนที่ 250 เทคนิคการเขียน PHP ให้เร็วและถูกต้อง ตอนที่ 2 34.อย่าวางใจ ข้อมูลที่ได้มาจากการป้อนของ user เช่น form $_POST ให้ใช้ mysql_real_escape_string เมื่อใช้ mysql และ htmlspecialchars เมื่อแสดงผล HTML
35.ด้วยเหตุผลด้านความปลอดภัย ไม่ควรแสดง path , extension และ configuration สู่สาธารณะ เช่นการ แสดง error หรือ phpinfo() ใน webroot
36.ปิดการทำงานของ register_globals ไม่มีสคริปไหนในงานจริงที่เปิดใช้กันหรอก มีแต่สคริปแย่ๆและเก่าๆเท่านั้น อีกทั้ง register_globals ก็จะไม่มีอีกแล้วให้ php6 แต่ก็แปลก หนังสือสอน php ภาษาไทยส่วนใหญ่ชอบสอนให้ใช้ เซ็งจริงๆ
37.ควรเก็บรหัสผ่าน มากกว่าเป็นตัวหนังสือดิบๆ อย่างน้อยควรเอารหัสผ่านไปเข้ารหัสเช่น MD5 หรือ sha1 ก็ได้นะ
38.ใช้ ip2long() และ long2ip() เพื่อแปลงค่า ip v4 ให้เป็นเลขชนิด long แทนที่จะเก็บเป็น text ใน database ขนาด database ต่างกันชัดเจน
39.ควรศึกษารายละเอียดที่เกี่ยวกับ PEAR ให้ดี เพราะว่าจะทำให้โค้ดมีมาตรฐานที่ดีมากขึ้น
40.เมื่อใช้ header('Location:'.$url); จำไว้เสมอว่าต้องตามด้วยคำสั่ง die(); เพื่อป้องกันการหลุดของคำสั่ง เพราะหลายกรณีโดน hack แล้วก็โดนควบคุมให้ทำงานในแบบที่คิดไม่ถึงเลย (ถ้าไม่ die(); php จะทำงานเลยไปด้วยนะครับ)
41.ใน OOP ถ้า method ใดเป็นชนิด static method ก็ให้ประกาศเป็นชนิด static ไปเลย จะทำให้เร็วขึ้นอีก 4 เท่า
42.การเพิ่มค่าตัวแปรใน local OOP method นั้นเร็วที่สุด ใกล้เคียงกับการเรียก ตัวแปร local ของ function และการเพิ่มค่าตัวแปรแบบ globla ช้าเป็นเท่าตัวเมื่อเทียบกับ local
43.การเพิ่มค่าของ object property (เช่น $this->prop++) ช้าเป็น 3 เท่าเมื่อเทียบกับ local variable
44.การเพิ่มค่าให้กับตัวแปร local ที่ไม่ได้ประกาศไว้ก่อน ทำให้ช้ากว่าปกติ 9-10 เท่าเมื่อเทียบกับการประกาศไว้ก่อน
45.การสร้างตัวแปร global แม้ว่าจะไม่ได้เอาไปใช้ใน function ก็ทำให้ช้าลง เพราะว่า php จะออกไปเช็คตัวแปร global ที่มีอยู่เสมอ
46.จำนวน method ที่เพิ่มขึ้น ไม่ส่งผลต่อ performance (ถ้าใช้งานเท่าเดิม)
47.method ใน derived classes ทำงานได้เร็วกว่า base class
48.function ที่รับ 1 parameter แต่ใน function ว่างเปล่ามีลักษณะเหมือน การทำงาน $localvar++ 7-8 ครั้ง และถ้าเป็น method ลักษณะนี้ ก็เปรียบกับ $localvar++ 15 ครั้ง
49.ไม่จำเป็นต้องทำทุกอย่างเป็น OOP มันจะทำให้เกิด overhead และ method, object จะทำให้เปลือง memory
50.อย่าวางใจ ข้อมูลที่ได้มาจากการป้อนของ user เช่น form $_POST ให้ใช้ mysql_real_escape_string แทนการใช้ mysql_escape_string หรือ addslashs แต่ถ้า เปิด magic_quotes_gpc ไว้ ก็ให้ใช้ stripslashes ไว้ก่อน
51.ระวังโดน header injection กับ function mail() form mail ที่หลายคน copy ตามเว็บมาใช้ มักจะโดนเอาไว้ใช้เป็นช่องทางส่ง email spam โดยที่เจ้าของเว็บไม่รู้ตัวเสมอๆ
52.unset ตัวแปรของ database (อย่างน้อยที่สุดก็ password) ไม่จำเป็นตั้งใช้ หลังจากการเชื่อมต่อ เรียบร้อยแล้ว
53.RTFM! ซะ แปลว่า Read The *-* ing Manual หรือ อ่านไอ้คู่มือหน่อยเถอะ อ่านได้ที่ http://th.php.net มีคำบรรยาย พร้อมตัวอย่างมากมาย ภาษาก็ไม่ยากเกินไปหรอกนะ
ที่มา : http://www.idesignboom.com/article-46/50-เทคนิคการเขียน-PHP-ให้เร็วและถูกต้อง-ตอนที่-2.html
Date :
2010-11-23 10:58:49
By :
Dragons_first
ได้ความรู้เพิ่มขึ้นเลยครับ เพราะบางอย่างผมก็เพิ่งรู้ว่าการเขียนที่ผมเขียนอยู่นั้นทำให้ช้า จะได้เอาไปปรับปรุงรูปแบบการเขียนของตัวเอง
ขอบคุณมากครับสำหรับความรู้ที่เอามาแบ่งปันกัน
(ผมว่าน่าจะปักหมุดนะครับ)
Date :
2010-11-23 11:52:47
By :
babyprogrammer
cool.......
Date :
2010-11-23 11:56:18
By :
mangporza
ผมพลาดไปหลายจุดเลย ต้องรีบแก้ไขแล้ว
Date :
2010-11-23 13:09:50
By :
avsqlz
55+ แต่ก่อนผมก็เป็นสมาชิเว็บนี้ครับ ปลิ้มๆ จาก idesignboom.com
Date :
2010-12-25 00:40:39
By :
iDesignboom.com
สะสมความรู้ไปอีกขั้นครับ ตอนนี้ ยังหัดเขียน php ครับ
Date :
2010-12-30 01:20:40
By :
tttaaammm
เป็นความรู้ที่มีค่ามากสำหรับผู้เริ่มต้นอย่างผมครับ จะได้มีแนวทาง
Date :
2011-01-10 02:00:15
By :
notton
ขอเอาไปเผยแพร่ที่เว็บบล้อกส่วนตัวนะ เด๋วจะทำลิงค์กลับมาให้ ขอบคุณมาก
Date :
2011-01-12 11:40:26
By :
nottpoo
อะไรหลาย ๆ อย่างที่ยังไม่รู้
Date :
2011-01-12 13:34:42
By :
webmaster
มีอะไรที่ไม่รู้อีกเยอะเลย ขอบคุณเจ้าของกระทู้ที่แบ่งปันครับ
Date :
2011-01-12 22:02:56
By :
thirawood
ขอบคุณสำหรับความรู้ดีๆจ้า
Date :
2011-02-28 13:04:40
By :
NAMDANGSODAZA
การเรียนรู้ไม่ได้หยุดอยู่แค่คำว่า ห้องเรียนครับ เรียนรู้ตลอดชีวิต ครับผม อิอิ^^
Date :
2011-03-01 14:04:40
By :
nerobenz
ขอถามหัวข้อ 36 ครับ
36.ปิดการทำงานของ register_globals ไม่มีสคริปไหนในงานจริงที่เปิดใช้กันหรอก มีแต่สคริปแย่ๆและเก่าๆเท่านั้น อีกทั้ง register_globals ก็จะไม่มีอีกแล้วให้ php6 แต่ก็แปลก หนังสือสอน php ภาษาไทยส่วนใหญ่ชอบสอนให้ใช้ เซ็งจริงๆ
คือผมยังมือใหม่อยู่น่ะครับ ขอถามแบบไม่ฉลาดหน่อยนะครับ register_globals ที่กล่าวมานั้นหมายถึง ตัวแปร Globals ใช่หรือปล่าวครับ
หากไม่ใช้ เราจะหลีกเลี่ยงไปใช้อะไรแทนครับช่วยยกตัวอย่างได้หรือไม่ แล้ว register_globals ที่ว่านั้นส่งผลเสียอะไรบ้างครับ
Date :
2011-11-21 19:58:10
By :
pp
+1 แบ่งปันความรู้ คับ
Date :
2011-11-21 23:10:45
By :
puchong
+1 ได้รู้อะไรอีกหลายอย่างคับ
Date :
2011-11-22 09:30:13
By :
pumin99
Server หลายแห่งยังเปิด register_global = on ครับ
Date :
2011-11-22 21:22:40
By :
webmaster
ยังทำเรื่องผิดๆ เกินครึ่งอยู่เลย ต้องปรับซะแล้ว
Date :
2011-11-23 08:31:21
By :
nimporn
+1 ขอบคุณมากๆนะคะ ที่เอามาเเชร์กัน กำลังศึกษาอยู่เลยคะ ^^
Date :
2011-11-23 09:50:28
By :
chocorach
เคยอ่านเจอ อึ้งเลยครับ
Date :
2011-11-23 09:51:13
By :
ALTELMA
อ่านยังไม่จบ เดี๋ยวกลับมาอ่านต่อน่ะค่ะ
Date :
2011-12-07 00:36:26
By :
iibuu
Load balance : Server 01