Skip to content


เลิกใช้เหอะไอ้ .inc น่ะ

เคยเขียนเว็บที่เป็น แล้วมีหน้าที่ต้อง include เข้ามาใช่มั๊ยครับ หน้า include ที่ว่านี้ ผมไม่ได้หมายถึงแค่ส่วนประกอบบนหน้าเว็บอย่างเดียวนะครับ แต่ผมรวมถึงพวกค่า config, ค่า constant, function ต่าง ๆ ที่ทำเป็น library ไว้ ฯลฯ ตั้งชื่อนามสกุลไฟล์พวกนั้นไว้ว่าอะไรครับ .inc หรือเปล่า เลิกใช้เถอะครับ ใส่นามสกุลอย่างที่มันควรจะเป็นเถอะครับ

ผมเคยเห็นคนใช้ไฟล์นามสกุล .inc ครั้งแรกตอนสมัยเขียน ASP สมัยนั้นผมยังเป็นเด็กเอ๊าะ ๆ วัยละอ่อนที่ไม่รู้ประสีประสาอะไร มันจะมีไฟล์ที่ผมใช้ประจำอยู่ไฟล์นึงที่ผมโหลดมาจากในเน็ต มันมีชื่อเต็ม ๆ ว่า adodb.inc ครับ ไฟล์นี้เป็น text file ธรรมดานี่แหละ ข้างในเป็น ASP Script (Server-Sided VBScript) ที่มีการประกาศค่าคงที่ต่าง ๆ มากมาย ที่ช่วยให้ชีวิตในการเขียน ASP สะดวกขึ้นอย่างมาก ผมใช้มันมาตลอดเวลาที่ผมเขียน ASP จนกระทั่งผมเลิกเขียน ASP ไป

จริง ๆ ผมไม่ได้หมายถึงแค่ .inc อย่างเดียวหรอกครับ ผมหมายถึง text file ทุกชนิดที่ server มันไม่รู้จัก หรือประมวลผลไม่ได้ ไม่ว่าจะเป็น .txt, .conf, .config, .inc, .duck, .dat, .ini หรือแม้กระทั่งไม่ใส่นามสกุลให้มันเลยก็ตาม ถ้าข้อความข้างในเป็น text มันก็คือ text file อยู่วันยังค่ำ

ปัญหามันอยู่ที่ไหนเหรอครับ ยังมีเว็บโปรแกรมเมอร์หลายคนที่ยังตั้งนามสกุลไฟล์เป็นพวกนี้อยู่ และมิหนำซ้ำ ยังเอาไป include ใช้งานจริงเสียด้วย ผมยกตัวอย่างกรณีของ php ละกันครับ ตัว php web server เอง (เช่น Apache) ปกติแล้วมันไม่ประมวลผลไฟล์นามสกุลพวกนี้หรอกครับ ยกเว้นแต่เราไป include ไฟล์พวกนั้นลงไปใน script ที่เราเขียน เช่นถ้าเป็น php มันก็จะประมวลผลไฟล์นามสกุลพวก .php, .php4, .php5 (หรืออะไรก็แล้วแต่ตามที่ตั้งไว้) ถ้าเราสั่ง include(“test.inc”) แบบนี้มันจะประมวลผล test.inc ให้ครับ แต่ถ้าเราลองเรียก test.inc ตรง ๆ ผ่าน browser มันไม่ประมวลผลหรอกครับ ทีนี้พอ server มันไม่ประมวลผล สิ่งที่มันคืนกลับมาให้เราเห็น มันก็คือข้อความข้างในไฟล์นั่นเอง ค่าต่าง ๆ ที่เราตั้งไว้เก็บไว้กะว่าจะดูคนเดียว ทั้ง username กับ password ของ database ทั้งโน่น ทั้งนี่ ตั้งหลายอย่าง ถูกเผยแพร่ไปง่าย ๆ ด้วยเหตุผลเพียงการตั้งนามสกุลไฟล์แบบนี้เท่านั้นเอง

พอมองเห็นปัญหาแล้วใช่มั๊ยครับ หลายคนตั้งนามสกุลไฟล์เป็นแบบนี้ เพื่อที่จะให้สื่อความหมายว่ามันเป็น include file นะ ก็ย่อว่า inc ไง หรือ config file นะ ก็ย่อว่า conf ไง ใช่ครับ มันสื่อ แต่มันไม่ได้เรื่องครับ อยากจะตั้งให้สื่อ แล้วยังจะให้ server ประมวลผล ก็ง่ายนิดเดียวครับ แค่เติมนามสกุลมันลงไปอีกหน่อยก็ได้ครับ เป็น .inc.php ก็ได้ เป็น .conf.php ก็ได้ สมัยไหนแล้ว ไม่ใช่ DOS นะครับ จะตั้งชื่อมีจุดหลาย ๆ จุดไม่ได้

แล้วคนอื่นจะรู้ได้ไงว่าเราตั้งนามสกุลไว้แบบนี้น่ะเหรอครับ ก็ตอนที่ server ล่ม หรือ script เจ๊งไงครับ เคยเห็นมั๊ยครับ ที่ script ทำงานไม่ถูกต้อง แล้วมัน report error ออกมา พร้อมชื่อไฟล์ที่มีปัญหา คิดว่ามันจะไม่มีวันเกิดขึ้นเลย 100% เหรอครับ กันไว้ก่อนดีกว่าครับ ดีกว่าจะมานั่งเสียใจทีหลังเพราะความเลินเล่อเล็ก ๆ น้อย ๆ

(entry นี้ เหมือนจะเป็นการบ่นเลยแฮะ แต่เพิ่งไปเจอคนตั้งชื่อไฟล์นามสกุลแบบนี้มา แล้ววันก่อนเว็บมันเจ๊งพอดี เลยเข้าไปดู เห็นอะไรหลายอย่างที่ไม่ควรให้เห็นเลยเชียว เฮ้อ… เห็นแล้วกลุ้ม เอามาบ่นหน่อยดีกว่า XD)

Share

Posted in Apache, Performance Tuning, PHP, Security, Souce Code.

Tagged with , , .


10 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. bAnk says

    ผมก้ใช้แบนี้ (filename.inc.php , filename.conf.php) ครับ ^^

  2. bAnk says

    เอ่ออ พี่อู คับ ผมขอถามเรื่องนึงดิ
    เกี่ยวกับวิธีทำให้ ภาพค่อยๆ fade ขึ้นมา เมื่อ scroll หน้าจอลงมา ถึงจุดที่รูปภาพอยู่ ทำยังไงอ่ะ ครับ
    หรือว่า เค้าเรียกว่าอะไรก็ได้

  3. chonla says

    เรียกไม่เป็นเหมือนกัน ถ้าให้เดา

    ก็ดัก event onscroll หรือ onresize ของ windows ก่อน
    แล้วจับ position ของ page ขณะนั้น ว่า overlap กับรูปเราหรือเปล่า
    ถ้าใช่ ก็แสดงภาพครับ

  4. bANk says

    งง อยากได้ code ตัวอย่างอ่ะครับ ^^
    พอมีเป็น ไกด์ไลน์ ป่าวครับ
    ขอบคุณครับ

  5. non says

    เท่าที่เห็นฝรั่งๆเขียนกันเขาก็จะใส่เป็น .inc.php กัน แต่ก่อนไม่ยักกะเข้าใจว่าทำไมต้อง *inc* แต่ปัจจุบันเข้าใจแล้วว่า.. ..มันก็แค่ให้คนเขียนเข้าใจ (-_-”)

  6. chonla says

    ใช่ครับ ทุกวันนี้ผมก็ตั้งชื่อไฟล์ให้เข้าใจง่าย ๆ เช่น employee.class.php หรือ http.lib.php แบบนี้ครับ

  7. chonla says

    ลืมตอบน้อง bANk ครับ

    ลองเขียนดูแล้ว แต่ติดปัญหาบางอย่าง ยังไม่ได้ลองแก้ไขเลยครับ ยังวุ่น ๆ อยู่

  8. Ton says

    แล้วทำไมโค้ดของ drupal ยังเขียน .inc เต็มไปหมดล่ะครับ

  9. chonla says

    ความคิดเห็นส่วนตัวนะครับ ถ้าจะใช้ .inc จริง ๆ
    ก็ควรจะมี file handler หรือ วิธีอื่นที่จะมาป้องกันให้ดีครับ เช่นการใช้ .htaccess เข้ามาร่วม
    อย่างนึง drupal เป็น open source และส่วนที่เป็น .inc เป็นแค่ library หรือ class ธรรมดา (หรือเปล่า ผมไม่เคยไปเปิดดู)
    ส่วน setting เท่าที่เคยเห็น เป็น php
    ดังนั้น เค้าใช้ .inc ในส่วนที่ดูไปก็เท่านั้นมั้งครับ
    ส่วนที่เป็นส่วนสำคัญ น่าจะยังเป็น .php ครับ

  10. ราคาคอมพิวเตอร์ says

    ใช้แบบ *.inc.php น่าจะมีประโยชน์กว่า



Some HTML is OK

or, reply to this post via trackback.

*