คู่มือการใช้งาน Direc admin สำหรับ End User

สำหรับลูกค้าที่ต้องการทราบวิธีการใช้งาน Direc Admin เพื่อจัดการกับ Hosting

 
facebook like button ไม่แสดงใน IE

ปัญหานี้มาเจอตอนที่เทสด้วย internet explorer แล้วพบว่า ปุ่ม like button ของ facebook ที่เป็น plugins นั้นไม่แสดง แต่ว่าบน Firefox , Chrome แสดงปกติดี

งงอีกแล้ว จนแล้วจนรอดไล่เรียงไปจนพบว่า ต้องใส่ header เพิ่มเล็กน้อย จากเดิม header เราใส่ว่า

<html xmlns="http://www.w3.org/1999/xhtml">

ก็เพิ่มอีกนิดให้เป็น

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">

เสร็จแล้ว IE ก็แสดง like button แล้ว

ปัญหานี้เกิดจาก IE ไม่รู้จัก standard ของ XML ในส่วนของ facebook มันก็เลยทำงานเอ๋อ พอเราให้มันรู้จัก มันก็สามารถทำงานได้ตามปกติครับ แต่กับ Firefox ,Chrome ฉลาดกว่านั้นเลยไม่มีปัญหานั่นเอง

ที่มา : http://web.meewebfree.com

 

 
คู่มือการใช้งาน Direc admin สำหรับ Reseller

สำหรับ Hosting Reseller ที่ต้องการทราบวิธีการใช้งาน Direc Admin เพื่อจัดการกับ Hosting

 
ค่าพื้นฐานของเว็บ on mobile

ทั้งหมดนี้อ่านมาจากหลายที่นะครับ ซึ่งจำไม่ได้แล้ว ว่าอ่านมาจากที่ไดบ้างครับ และอาจจะไม่ครบถ้วนเท่าไรนะครับ ดูพอเป็นแนวทางครับ

ความกว้างหน้าจอ
อย่างน้อย 120 px

มาตรฐานรูปแบบภาษา
XHTML-Basic 1.1

รูปภาพที่รองรับ
JPEG, GIF 89a

ขนาดหน้าเว็บที่ใหญ่สุด
20 Kilo Bytes

สี
อย่างน้อย 256 สี

การใช้ Style Sheet
CSS Level1 และ CSS Level 2 โดยใช้ media เป็น handheld หรือ all

Protocol
HTTP 1.0 หรือ บางครั้ง HTTP1.1

Script
ไม่รองรับสคริปใดๆ

****************
เทคนิคการทำเว็บสำหรับมือถือ

ทำURIให้เรียกง่าย และสั้น
เช่น http://www.example.com/exam.html ก็ใช้เป็น http://example.com/exam

ต้องมี accesskey
หรือ keyboard short cut

ลองเปิดเว็บในโหมด monochrome เพื่อดูการแสดงผล
ไม่ควรใส่รูป background เพราะมักจะไม่แสดงผล

อย่าใช้ table เยอะในแต่ละหน้า

อย่าเอา table มาจัด layout

ควรตั้ง charactor set ให้เป็น utf-8


ที่มา : http://web.meewebfree.com

 
สร้าง stripe background สำหรับทำเว็บ 2.0

วิธีสร้างได้ง่ายมากครับ เข้าไปเลือกสี เลือกลายเส้น กำหนดค่าต่างๆเล็กใหญ่ตามใจชอบได้เลยครับ

ผลงานที่ได้ก็ออกมาเป็นแบบนี้เลย

ไปลองกันได้ที่นี่ครับ stripe mania สร้าง background web 2.0 แบบ online

ที่มา : http://web.meewebfree.com

 
สร้างรูป loading แบบ online

พอดีว่าอยากได้รูป loading เอาไว้ใส่ตอนทำ load ajax สักหน่อย ว่าแล้วก็เจอเว็บนี้เลยครับ generate animation loading ได้แบบ online เลย

ลองไปดูกันครับ online-generate-image-loading ของเค้าเจ๋งจริงนะเนี่ย

ที่มา : http://web.meewebfree.com

 

 
ค่า SPF record สำหรับ google app

หากจำได้ ในกระบวนการตั้งค่า dns เพื่อใช้งาน google app นั้นจะมีข้อนึง ที่แนะนำให้ตั้งค่า SPF record แต่ว่าไม่ได้เป็นข้อบังคับ

ซึ่งค่า SPF record มีประโยชน์ช่วยลด spam ranking จากอีเมล์ที่ส่งออกไปจากโดเมนนั้นๆ จริงๆถ้าไม่ตั้ง ก็ไม่ได้จะเป็น spam ไปทันทีหรอกครับ แค่เป็นส่วนหนึ่งในการพิจารณาเท่านั้นเอง

หากโดเมนเราไม่ได้ตั้งค่า SPF record ใน source email จะได้ผลดังนี้ครับ (ขอปิดบังผู้ส่งมานะครับ)

Received: from irgb10.truemail.co.th (irgb10.truemail.co.th [203.144.173.226]) by mx.google.com with ESMTP id 15si3158117iwn.74.2010.04.14.10.15.26; Wed, 14 Apr 2010 10:15:29 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning This e-mail address is being protected from spambots. You need JavaScript enabled to view it does not designate 203.144.173.226 as permitted sender) client-ip=203.144.173.226; Authentication-Results: mx.google.com; spf=softfail (google.com: domain of transitioning This e-mail address is being protected from spambots. You need JavaScript enabled to view it does not designate 203.144.173.226 as permitted sender) smtp.mail= This e-mail address is being protected from spambots. You need JavaScript enabled to view it X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ar4KAPKUxUt8efLk/2dsb2JhbABzTG9mmEByq2uCawGOKIJtBwGBKm4Egyc X-IronPort-AV: E=Sophos;i="4.52,205,1270400400"; d="scan'208,217";a="44731070" Received: from ppp-124-121-242-228.revip2.asianet.co.th (HELO truefaster) ([124.121.242.228]) by irp4.truemail.co.th with SMTP; 15 Apr 2010 00:15:25 +0700 Message-ID: <001001cadbf6$0932ea90$0301a8c0@truefaster>

ซึ่งหลังจากที่ตั้ง SPF record จะทำให้ได้ผลดังนี้ครับ (เมลดังกล่าวเป็นคนละอีเมล์นะครับ แต่เปรียบเทียบส่วน header ให้ดูเท่านั้นเองครับ บรรทัดที่บอกว่า softfail หรือ pass นั่นล่ะครับ)

Received: from mail-qy0-f180.google.com (mail-qy0-f180.google.com [209.85.221.180]) by mx.google.com with ESMTP id y14si2935569wbs.72.2010.04.14.21.03.08; Wed, 14 Apr 2010 21:03:09 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of mail-qy0-f180.google.com designates 209.85.221.180 as permitted sender) client-ip=209.85.221.180; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of mail-qy0-f180.google.com designates 209.85.221.180 as permitted sender) smtp.mail= Received: by qyk10 with SMTP id 10so1061772qyk.25 for < This e-mail address is being protected from spambots. You need JavaScript enabled to view it >; Wed, 14 Apr 2010 21:03:08 -0700 (PDT) Received: by 10.229.191.1 with SMTP id dk1mr5014647qcb.18.1271304185470;

สำหรับค่า SFP ให้ตั้งค่าใน TXT record นะครับ โดยใส่ว่า

 v=spf1 include:aspmx.googlemail.com ~all

แล้วรอ dns update ก็เรียบร้อยแล้วครับ

ที่มา : http://web.meewebfree.com

 

 
validate form โดย prototype
พอดีว่าต้องทำ campaign ให้กับ pocket pc phone ยี่ห้อดังยี่ห้อหนึ่ง ที่มีลักษณะว่าเอาเครื่องเก่าไปแลกซื้อเครื่องใหม่ ในราคาที่ลดสูงสุดถึงกว่า 6000 บาท ทีนี้มันก็ต้องมีส่วน form สำหรับลงทะเบียนด้วย และแบบว่าระดับนี้ทั้งที ทำ form ธรรมดา แล้ว submit ไปแล้วมัน error ก็ดูไม่ดี ทำทั้งทีต้องให้สวยงามอลังการไปเลยแล้วกัน

ว่า แล้วก็เลยต้องทำส่วน validate ขึ้นมา ซึ่งส่วน validate นี้อาศัย prototype validate เข้ามาช่วยงาน มันทำได้ง่ายมากมาย ลักษณะก็เป็น AJAX นั่นเอง แต่ว่าการเขียนโค้ด ไม่จำเป็นต้องเขียน javascript code เลยแม้แต่จุดเดียว!! (สำหรับลูกเล่นพื้นฐาน)

เพราะว่าตัวอย่างที่ผม โหลดมาดูนั้น ทั้งหน้าก็มีแต่ส่วน link javascript เข้ามาแล้วก็ส่วนของ xhml เท่านั้นก็เสร็จแล้ว สามารถ validate ได้เลย เลยทึ่งว่ามันฉลาดขนาดนั้นเลยเหรอ (แต่จะมีส่วนเขียนเพิ่มสำหรับการ validate password ด้วย ที่อยู่ด้านล่าง)

สำหรับตัวอย่างการ validate ข้อมูล ดูได้ที่นี่ครับ http://tetlaw.id.au/upload/pages/really-easy-field-validation/
ถ้า view source code ดูจะพบว่าใช้งานง่ายมากๆ

ถ้าใครเอาไปใช้งานให้ง่ายสุดๆ ก็ save หน้าตัวอย่างลงเครื่องเลยก็ได้ครับ เพราะว่าเค้าเขียน validate ในรูปแบบต่างๆเอาไว้ให้น่าจะครบถ้วนแล้ว อย่างน้อยก็พอใช้เกือบทั้งหมดแล้วล่ะครับ อันนี้ผมนั่งไล่ดูแล้ว

สำหรับเงื่อนไขการ validate จะปรากฏเป็นชื่อ class ครับลองสังเกตุดีๆเช่น
<input name="field111" id="field111" class="required validate-date" title="Enter validate date" />
อันนี้ใช้ class require validate-date ซึ่งแปลว่า จำเป็นต้องกรอก และต้องกรอกในรูปแบบ วันที่ด้วย

สำหรับclass ทั้งหมดที่ใช้ validate ก็มีดังนี้ครับ
  • required = จะต้องกรอกด้วย
  • validate-number = ข้อมมูลเป็นลักษณะตัวเลข เช่น 23, 24.09 อะไรแบบนี้ คือจำนวนเต็มหรือทศนิยมได้
  • validate-digits = ช้อมูลต้องเป็นตัวเลขจำนวนเต็มเท่านั้น
  • validate-alpha = มีแต่ตัวหนังสือเพียงอย่างเดียว
  • validate-alphanum = ตัวหนังสือและตัวเลข(ต้องมีทั้งสองอย่าง)
  • validate-date = รูปแบบวันที่
  • validate-email = ต้องเป็น email ที่ถูกต้อง
  • validate-url = ต้องเป็น URL ที่ถูกต้อง
  • validate-date-au = วันที่ในรูปแบบ dd/mm/yyyy
  • validate-currency-dollar = กรอกค่าเงินในรูปแบบ $
  • validate-selection = บังคับว่าต้องเลือกรายการ ใน selection list อย่างน้อย 1 รายการ(ที่ไม่ใช่รายการแรก)
  • validate-one-required = ต้องเลือกปุ่ม option 1 อันจากทั้งหมดที่มีให้เลือก
อันนี้คือพื้นฐาน ที่มีมาให้เราเอามาใช้ได้เลยเท่านั้นครับ สำหรับความจริง เราสามารถเขียนส่วนต่อขยายได้อีก เช่นว่า จาก function พื้นฐานทั้งหมดเราจะเห็นว่า ไม่มีส่วนที่ใช้ยืนยันว่า password ที่กรอกมาทั้งสองช่องนั้นมีค่าตรงกันหรือไม่ แต่ถ้าเปิดตัวอย่างดูจะพบว่ามันสามารถยืนยันได้ด้วยว่า รหัสผ่านทั้งสองช่องมีค่าเท่ากัน นั่นเป็นเพราะว่าสามารถเขียนเพิ่มเติมลูกเล่นได้อีก

การเพิ่มลูกเล่นก็คือการสร้าง class ใหม่ขึ้นมา แล้วเราก็สร้าง javascript เพิ่มเติมขึ้นมา

<script type="text/javascript">
var valid = new Validation('form-id', {onSubmit:false});
var result = valid.validate();
</script>

ผมจะสมมุติการกรอกเบอร์โทรมือถือของไทยนะครับ ที่ต้องกรอกเป็น 0888888888 อย่างนี้ ก็จะเขียนได้แบบนี้ครับ
<script type="text/javascript">
var valid = new Validation('test', {onSubmit:false});
var result = Validation.add('validate-telephonenumber', 'กรอกไม่ถูกต้อง', {
pattern : new RegExp("^08[0-9]{8}$")
});
</script>
กรณีนี้ผมมี form id ชื่อ test แล้ว class ที่ผมเขียนใหม่ชื่อ validate-telephonenumber เท่านี้เองครับ เสร็จแล้ว ง่ายไหมครับ


สำหรับ option ที่ใช้ validate ทั้งหมด มีดังนี้ครับ
Validation.add('class-name', 'Error message text', {
pattern : new RegExp("^[a-zA-Z]+$","gi"), // ใช้งานแบบ regular expression
minLength : 6, // ความยาวขั้นต่ำ
maxLength : 13, // ความยาวสูงสุดของตัวหนังสือ
min : 5, // ค่าที่น้อยที่สุด ในกรณีที่เป็ฯตัวเลข
max : 100, // ค่าที่มากที่สุดในกรณีที่เป็นตัวเข
notOneOf : ['password', 'PASSWORD'], // ค่าที่กรอกต้องไม่เป็น หนึ่งในตัวเลือกนี้
oneOf : ['fish','chicken','beef'], // ค่าที่กรอก ต้องเป็นค่าใดค่าหนึ่งในตัวเลือกนี้
is : '5', // จะต้องเป็นค่านี้
isNot : 'turnip', // ต้องไม่เป็นค่านี้
equalToField : 'password', // จะต้องมีค่าซ้ำกัน field ที่ชื่อ
notEqualToField : 'username', // จะต้องมีค่าไม่เท่ากัน field ที่ชื่อ
include : ['validate-alphanum'] // เอาการ validate ของเดิมที่มีมาให้เอามาใช้ ต้องระวังการเกิด infinity loop ด้วยนะครับ
});


เท่านี้เราก็มีส่วน validate form มาใช้แล้วครับแบบง่ายๆและเร็วๆเลย


หลังๆ นี้ผมพยายามหาวิธีทางการเขียนเว็บให้รวดเร็วที่สุด โดยอาศัยเครื่องมือช่วยเหลือต่างๆที่มีอย่างมากมายบนโลกของเรานี้เอง เพื่อลดขั้นตอนการทำงานครับ และในส่วน phase ต่อไปของการพัฒนาตัวผม เองจะเป็นการพัฒนาส่วนของ user interface ให้ใช้งานได้ง่ายและอิสระมากที่สุด (แต่ส่วนนี้จะเป็นส่วนที่เสียเวลาและยุ่งยากมากที่สุด) ก็ติดตามต่อไปได้ครับ(ถ้ามีเวลาและโอกาส)

อ้อ คู่มือแบบภาษาอังกฤษแบบเต็มๆดูได้ที่นี่ครับ http://tetlaw.id.au/view/javascript/really-easy-field-validation

อ้อ อีกเรื่องที่เกือบลืมไป ว่าการ validate ส่วนนี้ไม่ได้หมายความว่าหน้าที่รับ input เหล่านี้จะปลอดภัยนะครับ เพราะว่าส่วนนี้มีผลกระทบเฉพาะ user เท่านั้น สำหรับ robot และ hacker ไม่ได้รับผลกระทบครับ ดังนั้นหน้าที่รับข้อมูลก็จะต้องทำการ validate ข้อมูลซ้ำอีกทีหนึ่งด้วยภาษาสคริปที่ท่านใช้งาน

พึงระลึกเสมอว่า input = devil แต่เราเลี่ยงไม่ได้ที่จะเปิดประตูต้อนรับดังนั้นเราก็ต้อง safe ตัวเองโดยการ scan ให้ดีล่ะครับ

ที่มา : http://web.meewebfree.com

 
Export Excel ด้วย PHP

พอดีว่าช่วงนี้ เป็น outsource พัฒนาระบบ CRM ให้เว็บที่รวมสินค้ามือสองแห่งหนึ่ง ก็เนื่องด้วยระบบ report ต่างๆ เช่น การสั่งซื้อสินค้า อะไรต่างๆ เค้าต้องการให้สามารถ export ออกมาเป็น excel ได้เพื่อที่จะได้สามารถนำไปใช้งานต่อ เช่นเอาไปคิดค่า commission ดังนั้นงานก็ตกมาอยู่ที่ผมเลยครับ ไม่เคยเขียนซะด้วยสิ

แต่วันเดียวก็เขียนจนเสร็จครับ มีตัวช่วย ทำให้งานง่ายกว่าที่คิดเอาไว้เยอะเลย ตัวช่วยที่ว่านั่นก็คือ Class ที่มีคนเขียนเอาไว้ให้เราใช้นั่นเองครับ ก็โหลดมาใช้ แล้วก็เรียกใช้งาน function ต่างๆที่เค้าเตรียมไว้ให้ แป้บเดียวเสร็จแล้วครับ

พร่ำมาก น้ำลายแตกฟองอีกแล้ว เริ่มเลย ด้วยการโหลดไฟล์ Class สำหรับ export file เป็น excel ด้วย php

สำหรับรายละเอียดของสคริปนี้สามารถเข้าไปอ่านได้ที่

http://www.bettina-attack.de/jonny/view.php/projects/php_writeexcel/

เริ่มต้นให้เราสร้างไฟล์ขึ้นมา 1 ไฟล์นะครับ แล้ว ใส่เข้าไปตามนี้เลยครับ (ไฟล์นี้ คือไฟล์ example-simple.php ที่อยู่ในแฟ้มที่ให้โหลดครับ)

  1. <?php
  2. set_time_limit(10);
  3. require_once "class.writeexcel_workbook.inc.php";
    require_once "class.writeexcel_worksheet.inc.php";
  4. $fname = tempnam("/tmp", "simple.xls");
    $workbook = &new writeexcel_workbook($fname);
    $worksheet = &$workbook->addworksheet();
  5. # The general syntax is write($row, $column, $token). Note that row and
    # column are zero indexed
    #
  6. # Write some text
    $worksheet->write(0, 0, "Hi Excel!");
  7. # Write some numbers
    $worksheet->write(2, 0, 3); # Writes 3
    $worksheet->write(3, 0, 3.00000); # Writes 3
    $worksheet->write(4, 0, 3.00001); # Writes 3.00001
    $worksheet->write(5, 0, 3.14159); # TeX revision no.?
  8. # Write two formulas
    $worksheet->write(7, 0, '=A3 + A6');
    $worksheet->write(8, 0, '=IF(A5>3,"Yes", "No")');
  9. # Write a hyperlink
    $worksheet->write(10, 0, 'http://www.php.net/');
  10. $workbook->close();
  11. header("Content-Type: application/x-msexcel; name=\\"example-simple.xls\\"");
    header("Content-Disposition: inline; filename=\\"example-simple.xls\\"");
    $fh=fopen($fname, "rb");
    fpassthru($fh);
    unlink($fname);
  12. ?>

โดยไฟล์ที่สร้างขึ้นมานี้ ต้องอ้างอิงไฟล์ class.writeexcel_workbook.inc.php และ class.writeexcel_worksheet.inc.php ให้ถูกต้องด้วยนะครับ ถ้าอยู่คนละแฟ้มก็อ้างอิงเข้าไปที่ตัวไฟล์ให้ถูกต้อง อันนี้ถือเป็นข้อสังเกตแรกที่ต้องตรวจสอบให้ดีครับ

save แล้วรันไฟล์นี้ก็ได้ excel ออกมาแล้วครับ ....จบครับ

ง่ายไปไหมครับ 555 หากินง่ายๆ งั้นขออธิบาย function ที่ใช้งานดีกว่าครับ จะได้เอาไปประยุกต์ใช้งานกันได้

 

$worksheet = &$workbook->addworksheet(); ///บรรทัดนี้ เอาไว้สร้าง worksheet ใหม่นะครับ (ถ้าเปิดโปรแกรม excel ครั้งแรกจะเป็นว่ามันมี 3 แผ่นนั่นล่ะครับ) ถ้าต้องการเพิ่มอีกอัน ก็สร้าง object ขึ้นมาใหม่อีกอัน เช่น $worksheet2 = &$workbook->addworksheet('NameOfWorkSheet'); (เพิ่มบรรทัดนี้นะครับ ไม่ใช่แก้อันเดิมให้เป็นอันนี้) โดยเราจะได้ object $worksheet2 เป็นหน้า worksheet อีกแผ่นนึงครับ แล้วผมก็ตั้งชื่อเอาไว้ด้วยเลย โดยให้ชื่อว่า NameOfWorkSheet นั่นเองครับจะสร้างกี่ sheet ก็จัดไปเยอะๆครับ

$worksheet->write(0, 0, "Hi Excel!"); /// ถ้าอ่านย่อหน้าบนแล้ว ตอนนี้เราก็จะได้ สอง worksheet แล้วนะครับ คือ $worksheet และ $worksheet2 ซึ่งถ้าเราจะใส่ค่าใน worksheet ไหนก็ใส่ค่าเข้าไปใน member ของ object นั้นได้เลยครับ อย่างโค้ดตัวอย่างนี้ คือการใส่คำว่า Hi Excel! เข้าไปใน row ที่ 1 column ที่ 1 (A1 นั่นเองครับ) แต่ถ้าเราจะขยับมันก็ได้เลยครับ เช่น $worksheet->write(0, 5, "Hi Excel!"); ข้อความดังกล่าวก็จะย้ายไปที่ row ที่ 1 column ที่ 6 ทันทีครับ (F1 นั่นเองครับ) ที่ต้องระวังเรื่องการอ้างอิงก็คือ A มีค่าในส่วน column ซึ่งตัว A มีค่าเป็น 0 นะครับ ดังนั้น การอ้างอิง column ที่ 2 มันคือ column C ใน excel ไม่ใช่ column B อันนี้ต้องระวัง รวมไปถึง Row ด้วยเช่นกัน Excel จะเริ่มที่ row 1 แต่ว่าการอ้างอิงในการเขียนโปรแกรมจะเริ่มอ้างอิงที่ 0 ดังนั้น การเขียนค่าใดๆใส่บรรทัดที่ 2 ก็ต้องอ้างอิงว่า 3 นะครับ

ดูท่าจะงงกันแน่ๆ ดูตามนี้ดีกว่าครับ การอ้างอิง โดยเลขตัวแรกคือ row ตัวหลังคือ column

ใส่สูตรคำนวณก็ได้นะครับ เช่น $worksheet->write(7, 0, '=A3 + A6');ตามตัวอย่างก็คือการเอา A3+A6 นั่นเองครับ

นอกจากนี้ยังมี function อื่นๆอีกมากมายเลยครบ เช่นเราสามารถกำหนด format ให้มันก็ได้ ตัวอย่าง

  1. $worksheet->set_column('A:B', 32);
  2. $heading =& $workbook->addformat(array(
    bold => 1,
    color => 'blue',
    size => 18,
    merge => 1,
    ));
  3. $headings = array('Features of php_writeexcel', '');
    $worksheet->write_row('A1', $headings, $heading);

เป็นการกำหนด ตัวหนา สี ขนาดตัวอักษร ให้กับ A1 นะครับ โดยจะมีผลที่บรรทัด $worksheet->write_row('A1', $headings, $heading); โดยที่ $headings คือข้อความ ตัว $heading คือ format ที่ถูกกำหนดเอาไว้นั่นเองครับ

ทั้งนี้ มีข้อสังเกตอีกจุดก็คือการตั้งค่า worksheet ควรใช้ตัวแปรให้ถูกนะครับ เช่นเราต้องการกำหนดความกว้าง column A เราจะเขียนได้ว่า
$worksheet->set_column('A:A', 32);

แต่กลับกัน ถ้าเราต้องการกำหนดรูปแบบข้อความเราต้องเขียนว่า

  1. $heading =& $workbook->addformat(array(
  2. bold => 1,
  3. color => 'blue',
  4. size => 18,
  5. merge => 1,
  6. ));

แล้วก็เอา $heading ไปใช้เป็น object เพื่อกำหนด format ต่อไปครับ

กรณีนี้ คนที่เขียน PHP 4 จะค่อนข้างงง เพราะว่าไม่ค่อยได้จับ OOP เท่าไรครับ แต่เชื่อว่าไม่ยากจนเกินไป

ทั้งนี้ ดูตัวอย่างอื่นๆเพื่อประกอบความเข้าใจได้เลยครับ ซึ่งอยู่ในแฟ้มที่ให้โหลดนั่นเองครับ

ที่มา : http://web.meewebfree.com

 

 
แก้รูป .png พื้นหลังไม่โปร่งแสง

ปัญหานี้เป็นเรื่องที่สร้างความ งง กันมาแล้วนับไม่ถ้วน ด้วยความที่ว่าเราสร้างรูป .png ให้พื้นหลังมันโปร่งแสง เพราะว่าจะได้เอาไปวางบนรูปอื่นได้ โดยหากปรกติคนที่ใช้ Firefox Browser อยู่แล้วก็จะเห็นได้ว่ามันก็ปรกติดี พื้นหลังเราก็สามารถมองทะลุได้ตามปรกติ แต่วันใดที่เราทดสอบเปิดเว็บเราเองด้วย Internet Explorer แล้วล่ะก็ เราก็จะเห็นว่ารูป .png ที่เคยมีพื้นหลังที่โปร่งแสง กลับกลายเป็นมีพื้นสีเทา(หรือสีอื่น) ซึ่งนั่นอาจจะไม่ใช่เรื่องที่น่าพิศมัยหรือน่าใช้เท่าไรเลยอย่างแน่นอน อย่างผมเองครั้งแรกที่เจอ นั่งแก้รูปอยู่ตั้งนาน แก้แล้วแก้อีก save แล้ว save อีก สุดท้ายยอมครับ ไม่ไหวจริงๆ

สำหรับปัญหานี้เคยได้รับคำแนะนำถึงวิธีแก้ไขจากท่านสมาชิกของเราครับ แต่หลังจากที่ผมเอาไปลองเอง ปรากฏว่าแก้ไม่ได้ ยังไม่หายเหมือนเดิม.... (สงสัยวิทยายุทธผม ยังไม่ถึงขั้น)

แล้วพอดีว่า วันนี้ระหว่างที่ผมกำลังปั้น php-fusion core7 ขึ้นมาสำหรับเว็บส่วนตัวของผมเองนั้น ก็พบว่า ผมสามารถนำรูป png โปร่งแสง มาใช้ในเว็บ php-fusion ได้สบายเลย แสดงว่า บัดนี้ สามารถแก้ไขเรื่องของ PNG ที่ไม่โปร่งแสงได้แล้ว (คือเค้าแก้กันได้ตั้งนานแล้ว แต่ผมยัง งมโข่งอยู่)

วันนี้เราจะเลิกงมโข่งกันครับ 555 ว่าแล้วพี่ google ก็จัดให้ หลังจากที่ผมได้ค้นข้อมูลสักเล็กน้อยก็พบว่าปัญหานี้พบได้สำหรับผู้ที่ใช้ งาน IE6 ลงมา (บ้านเรา Browser หลักๆที่ยังนิยมใช้กันคือ IE6) จะเจอปัญหา ภาพ .png ไม่โปร่งแสงเหมือนกันหมด โดยเราจะเห็นว่าเป็นพื้นสีเทาแทน

เค้าบอกว่า ปัญหานี้เกิดจาก IE ไม่สามารถ render ภาพ .png 32 bit ได้เลยออกมาได้พื้นสีเทา

ปัญหาสู่ทางแก้

เราก็ได้วิธีแก้ไขมาด้วยครับ วิธีแก้นั้นง่ายนิดเดียวเอง ผมจะทำให้ดูครับ

เริ่มต้นจาก ผมมีรูปในหน้าเว็บ ที่เป็น png ธรรมดา 1 ชิ้น เปิดดูด้วย IE จะเห็นได้ว่ามันไม่โปร่งแสงนะครับ ผิดจากที่เปิดด้วย firefox
รูปด้านล่างฝั่งซ้ายเปิดด้วย Internet Explorer ฝั่งขวาเปิดด้วย Firefox ด้วยหน้าเว็บเดียวกันจะเห็นว่าให้ผลที่ต่างกัน

สำหรับโค้ดที่ผมใช้ มีดังนี้ (รูปนี้ชื่อ img.png)

  1. <html>
  2. <head>
  3. <title>1</title>
  4. </head>
  5. <body>
  6. <img src="/img.png" mce_src="/img.png">
  7. </body>
  8. </html>

?

ต่อมา ผมก็เอาไฟล์ javascript ตัวนี้ (คลิกขวา save link as....) ไปใส่เข้าไปในหน้าเว็บก็จะได้โค้ดดังนี้ (ผมวางในแฟ้มเดียวกันนะครับ)

  1. <html>
  2. <head>
  3. <title>1</title>
  4. <!--[if lt IE 7.]>
  5. <script defer type="text/javascript" src="/pngfix.js" mce_src="/pngfix.js"></script>
  6. <![endif]-->
  7. </head>
  8. <body>
  9. <img src="/img.png" mce_src="/img.png">
  10. </body>
  11. </html>

เพิ่มส่วนที่เป็นตัวหนาขึ้นมานั่นเอง โดยจะต้องเอาส่วนที่เป็นตัวหนา วางไว้ใน head section นะครับ ส่วนเรื่องไฟล์ ถ้าย้ายที่วางก็ต้องอ้างอิงให้ถูกด้วยนะครับ

ผลที่ได้หลังจากการเรียกใช้ JavaScript ดังกล่าว

จะเห็นได้ว่า สีพื้นที่เคยมีก็หายไปแล้ว ง่ายๆแค่ใช้ไฟล์นี้เพียงไฟล์เดียว

ดังนั้น web master ก็ควรติดตัวไว้ใช้ อุ่นใจค่ะ 5555 เท่านี้เราก็ได้วิธีการแก้ปัญหา เรื่องรูป png ไม่โปร่งแสงแล้วนะครับ ท้ายนี้ต้องขอบคุณ http://homepage.ntlworld.com/bobosola ที่เขียนโค้ดดีๆให้เราได้ใช้ครับ

ที่มา : http://web.meewebfree.com

 

 
<< Start < Prev 1 2 3 4 5 6 7 8 9 Next > End >>

Page 1 of 9
Banner

Hosting Functions

Hosting Space
คือพื้นที่ความจุในการเก็บไฟล์เว็บไซต์ไว้บน Hosting มีหน่วยเป็น Byte
BandWidth
คือปริมาณความจุของข้อมูลที่มีการส่งเข้า-ออกจาก Hosting ดดยการเปิดเว็บหรือส่งผ่าน ftp มีหน่วยเป็น Byte
pop3 e-Mail
คือระบบ e-Mail ที่สามารถเชื่อมต่อกับ Outlook หรือโปรแกรม e-Mail ต่างๆ บนเครืองคอมพิวเตอร์ได้

Development Support

ภาษาโปรแกรมที่รองรับ
HTML,PHP, JSP, AJAX, TOMCAT, XML,+PEAR, PHPMyAdmin, CGI, Perl
ฐานข้อมูลที่รองรับ
MySQL 5.0.67

Reseller Hosting

Hosting Reseller โฮสติ้ง รีเซลเลอร์ ความเร็วสูง สำหรับผู้ที่เริ่มต้นธุรกิจ Hosting ทดลองใช้งานฟรี 7 วัน รับประกันคืนเงินภายใน 30 วัน


สำหรับ webmaster
ที่ต้องมี Hosting บริการให้ลูกค้าของท่าน สามารถเริ่มต้นได้ที่นี่ พร้อมข้อเสนอดีๆ ที่ไม่มีที่ไหน
  • ทดลองใช้งานฟรี 7 วัน
  • ยังไม่ต้องเสียค่าใช้จ่ายเริ่มต้น
  • รับฝากลูกค้าและขอโอนคืนได้
  • ไม่ต้องดูแล server

ติดตั้ง Open Source ฟรี


  
   
   
   
   
   
   And more..


ธนาคารกสิกรไทย   ธนาคารกรุงเทพ  ธนาคารกรุงไทย  ธนาคารไทยพาณิชย์  ธนาคารกรุงศรีอยุธยา  ธนาคารนครหลวง