วันจันทร์ที่ 21 กรกฎาคม พ.ศ. 2557

การ เช็คค่าของ Browser ว่าเป็น IE6-11 หรือไม่

นับว่าเป็นปัญหามาก สำหรับ webmaster และผู้ที่เขียนเว็บเองที่นำ Ajax มาใช้งานในระบบเว็บของตนเองเพื่อให้เกิด ประสิทธิภาพที่ดียิ่งขึ้น แต่การเขียน Code ไป coding เป็น แบบ Windows-874 (แทนที่จะเป็น แบบ UTF-8)จะทำให้ Script ของ Ajax เองไม่ทำงาน หรือ บางคนต้องการเขียน Script ที่ต้องการให้ผู้ใช้งานใช้ ใช้งานแต่ Browser ที่เป็น IE (Internet Explorer) มาดูของเดิม กัน

แต่ก่อนผมจะใช้

ตัวอย่าง Code
<?php
$iec = stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE');
$iever = substr($iec, 0,8);
if($iever=="MSIE 7.0" || $iever=="MSIE 8.0" || $iever=="MSIE 9.0"|| $iever=="MSIE 10.")
{
echo "This IE.";
}else{
echo "Other Broser.";
}
?>
*** คำอธิบาย
คือ ขั้นแรก ผมจะตัด ข้อความที่อยู่ใน ตัวแปร $_SERVER['HTTP_USER_AGENT'] ออกมาเก็บไว้ที่ตัวแปร $iec โดยการเริ่มตัดตั้งแต่คำที่ว่า MSIE เป็นต้นไป  หลังจากนั้นผมก็นำตัวแปรที่ชื่อ $iec มาตัดข้อความอีกรอบ โดยเริ่มตัดที่ตัวอักษรที่ 0 ถึงตัวอักษรที่ 8 (รวมช่องว่าง หรือ Space bar ด้วย) ไปเก็บไว้ในตัวแปร ที่ชื่อ $iever แล้วนำมาเทียบกับ if ว่ามีค่าหรือคำว่า "MSIE" ของเวอร์ชั่นใดบ้างตามตัวอย่าง ตาม Code ตัวอย่าง แต่ปัญหาของ Code ตัวอย่างด้านบน เมื่อ IE ออกเวอร์ชั่นใหม่คือ IE11(Windows 2008,Windows7,8,8.1 ขึ้นไป) ค่าที่เก็บในตัวแปร $_SERVER['HTTP_USER_AGENT'] จะไม่เหมือนกับ เวอร์ชั่น 6 -10 ดั่งตัวอย่าง เพราะฉะนั้นจึงทำให้เกิดปัญหาเกี่ยวกับการทำงานของ ระบบที่เราพัฒนา(ผมเองก็โดน เลยต้องหาวิธีแก้ไข) จาก google บ้าง และ http://stackoverflow.com/ ส่วนมาจะเป็นชาวต่างชาติเค้าแนะนำวิธีการต่างๆ นานา ผมก็เลยนำมาประยุกต์เอาแบบง่าย สุดเข้าใจได้ดี ตามตัวอย่าง(ตามประสาผมเองที่คิดได้เพียงเท่านี้)เลยครับ

*** คำอธิบาย
มีสอง Function ของ php ที่ผมนำมาใช้งานร่วมกันคือ
1.คือ Function "preg_match" คือ เปรียบเทีบคำในสตริงกับรูปแบบที่เรามี
2.คือ Function "strpos"  คือ ค้นหาตำแหน่งแรกของคำในสตริง

ตัวอย่าง Code

<?php
$AA = preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT']);
echo "AA=".$AA;
echo "<br>";
echo "HTTP_USER_AGENT = ".$_SERVER['HTTP_USER_AGENT'];
echo "<br>";
$BB = strpos($_SERVER['HTTP_USER_AGENT'], 'Trident/7.0; rv:11.0');
echo "BB=".$BB;
echo "<br>";
echo "HTTP_USER_AGENT = ".$_SERVER['HTTP_USER_AGENT'];
?>

เมื่อ รันผ่าน IE จะได้ดังภาพ









และเมื่อรันผ่าน Chrome จะได้ดังภาพ








จะเห็นได้ว่าถ้ารันบน IE11 ค่าของ
$AA = preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT']);จะมีค่าเท่ากับ = 0 เพราะว่า IE11 ไม่ได้เก็บรายละเอียดข้อมูล Browser แบบเดิม

และ
$BB = strpos($_SERVER['HTTP_USER_AGENT'], 'Trident/7.0; rv:11.0');จะมีค่าเท่ากับ = 36 เพราะว่า IE11 ไม่ได้เก็บรายละเอียดข้อมูล Browser แบบเดิมแต่จะมี "Trident/7.0; rv:11.0" เข้ามาแทน(ตามเพื่อนๆชาวต่างชาติบอกมา จาก http://stackoverflow.com/)

ส่วนถ้าเป็น Chrome จะมีค่า $AA = 0 และ $BB = ค่าว่าง
ดังนั้นผมเลยนำทั้งสอง Function มาทำการเปรียบเทียบ แบบ Boolean ตามตัวอย่าง

ตัวอย่าง Code
<?php
if (preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT']) || (strpos($_SERVER['HTTP_USER_AGENT'], 'Trident/7.0; rv:11.0') !== false)) {
echo "IE Browser";
}else{
echo "Other Browser";
}
?>
*** คำอธิบายการเทียบค่าของ สอง Function เป็นแบบ Boolean คือมี true กับ false ตามตัวอย่างผม ขั้น ทั้งสอง Function ด้วย || (หรือ) นั่นคือหากการเทียบค่าในวง(preg_match) แรก และ (strpos)ที่สอง หรือ อันใดอันหนึ่ง ไม่เท่ากับค่าว่างแสดงว่าเป็น IE แค่นี้ก็เอาอยู่แล้ว ครับสำหรับการเทียบค่าว่า ใช้ Browser IE หรือไม่ คราวหน้าผมจะมาอธิบายการ แปลงค่า หาก Coding จาก Encode Windows874 ไปเป็น UTF-8 เพื่อรองรับการทำงานของ Ajax

หวังว่าคงเป็นประโยชน์บ้างนะครับ สุพจน์ บัวเลิง

วันจันทร์ที่ 23 มิถุนายน พ.ศ. 2557

เช็คค่าว่าง radio button

อาจจะเป็นเรื่องใหญ่ สำหรับมือใหม่ที่กำลังหัดเขียน โปแกรมภาษา php ในการเช็คค่าว่างของการกรอกข้อมูลต่างๆ หนึ่งในนั้น คือ radio button ที่คิดว่ายากนะหากไม่เคยเขียนมาก่อนของเดิม(การเช็คค่าว่างตัวแปรทั่วไป)คือ

<script language='JavaScript'>
      function  check_PostN(){
      if (document.frmlog.code.value ==""){
           alert("กรุณากรอก รหัสนิสิต")
           document.frmlog.code.focus();
         return false
        }
     }
</script>
แต่พอมาเป็น radio button เราจะเช็คค่า value =="" หรือ value =="NULL" ไม่ได้เพราะมันจะไม่รู้จัก value ของ radio button วิธีการคือให้เราเช็คเป็นแบบ boolean คือ true กับ false เท่านั้น  ตัวอย่าง

<script language='JavaScript'>     
function  check_PostN(){       
if (document.frmlog.typposition[0].checked == false){           
alert("กรุณาเลือก ตำแหน่งงานด้วย")           
document.frmlog.typposition[0].focus();         
return false       
}   
 }
</script>
คำอธิบาย
document = คืองานไฟล์งานที่รันปัจจุบัน
frmlog = ชื่อของ ฟอร์ม ในไฟล์งาน
typposition[0] = ชื่อตัวแปร radio button เป็นแบบ Array
checked = สถานะของ radio button
false = boolean สถานะของ radio button คือ ถ้า fales คือไม่ได้เลือก true คือได้เลือก

โค๊ดแบบเต็ม
=======Java Script=========
<script language='JavaScript'>     
function  check_PostN(){       
if (document.frmlog.typposition[0].checked == false){           
alert("กรุณาเลือก ตำแหน่งงานด้วย")           
document.frmlog.typposition[0].focus();         
return false       
}     
}
</script>
===========html============

<form action="" method="post" name="frmlog" onSubmit='return check_PostN();'>
    <label>
      <input name="typposition" type="radio" value="1" />แอดมิน<br />
 <input name="typposition" type="radio" value="2" />เว็บมาสเตอร์<br />
 <input name="typposition" type="radio" value="3" />ผู้ใช้งานทั่วไป
    </label>
</form>




หวังว่าคงจะเป็นประโยชน์บ้างนะครับ สุพจน์ บัวเลิง

วันอาทิตย์ที่ 22 มิถุนายน พ.ศ. 2557

วิธีแก้ไวรัส ทำ shortcut และ hidden

วิธีแก้ไข ไวรัส ทำ shortcut และ hidden(ซ่อนไฟล์) ไฟล์ ใน FlashDrive ระบาดออก หากใครโดนวิธีแก้ไขเบื้องต้นนะครับ

1. ไปที่ Start-> เลือก Run แล้วพิมพ์ว่า cmd
2.ดูว่า FlashDrive ของเราอยู่ไดร์อะไร สมมุติว่า FlashDrive ผมเป็น ไดร์ F ผมก็พิมพ์ f: เพื่อเปลี่ยนไดร์ไปยัง FlashDrive
3.พิมพ์
attrib -s -h -r /s /d




ใน command หรือที่เรียกว่า DOS shell นะครับ แค่นี้จะได้งานที่ถูกซ่อนกลับคืนมา




***ปัจจุบันร้ายแรงถึงขี้น โฟลเดอร์ไหนที่เปิดอยู่ในขณะนั้นงานจะหายหมดเอาคืนไม่ได้ แต่โฟล์เดอร์อื่นๆ ยังคงอยู่ เลยเอามาฝากเผื่อเป็นประโยชน์บ้างสำหรับใครที่โดนกับตัวเอง

การเปิด/ปิด safemode บน win8/8.1

หลังจากประสบปัญหากับตนเอง คือผมต้องการเข้าใช้งาน Safe Mode ของ Windows 8.1 โดยการ เปิด หรือ รีสตาร์ทเครื่องใหม่แล้ว กด ปุ่ม F8 ย้ำๆ เพื่อจะเข้า สู่โหมด Safe Mode ผลปรากฏว่า “เสย” หุหุหุหุหุ คือกด ปุ่ม F8 จนแป้นมันจะระเบิดก็ไม่สามารถเข้าใช้งานได้ผมเลยสงสัยว่า เพราะอะไรเลยลองหา พี่ Google ลองจนเจอหลายเว็บ บอกหลายวิธีต่างๆ นานา ส่วนมากจะดูแล้ว เข้าใจยากมาก เลยไปเจอของ ต่างประเทศ อันหนึ่งง่ายดี คือ
1.เปิดเครื่องคอมฯ หรือ Note book เข้าปกตินี่แหละครับ
2.เข้าที่ run แล้ว พิมพ์ หรือ Copy ตามนี้ไปวางเลยครับ
เปิด safemode win8/8.1
bcdedit /set {default} bootmenupolicy legacy

ปิด safemode win8/8.1
bcdedit /set {default} bootmenupolicy standard

3.ทำการรีสตาร์ทเครื่องคอมพิวเตอร์ แล้วลอง กด F8 ไว้ท่านก็จะได้ เมนู Boot ที่มีตัวเลือก Safe Mode ขึ้นมา (ง่ายไหมครับ)
*** ทางไมโครซอฟต์ได้ทำการปิดไว้เพื่อทำให้การ บูตเข้าเครื่องเร็วขึ้น




หวังว่าจะเป็นประโยชน์ สุพจน์ บัวเลิง