<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>nattster &#187; php</title>
	<atom:link href="http://nattster.siamdev.net/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://nattster.siamdev.net</link>
	<description>ก็ชอบเขียนโปรแกรมอ่ะ...ผิดตรงไหน!?</description>
	<lastBuildDate>Tue, 01 Jun 2010 08:57:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	
<!-- Start Of Script Generated By WP-PostViews Plus -->
<script type='text/javascript' src='http://nattster.siamdev.net/wp-includes/js/jquery/jquery.js?ver=1.4.2'></script>
<script type="text/javascript">
/* <![CDATA[ */
/* ]]> */
</script>
<!-- End Of Script Generated By WP-PostViews Plus -->
	<item>
		<title>compact, extract ใน PHP</title>
		<link>http://nattster.siamdev.net/2009/12/compact-extract-php/</link>
		<comments>http://nattster.siamdev.net/2009/12/compact-extract-php/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 20:49:55 +0000</pubDate>
		<dc:creator>nattster</dc:creator>
				<category><![CDATA[คอมพิวเตอร์จ๋า]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://nattster.siamdev.net/?p=618</guid>
		<description><![CDATA[ปกติส่งตัวแปรหลายๆ ตัวข้าม function ใน PHP ผมจะสร้าง array แล้วโยนไปโยนมาครับ เมื่อคืนเกิดสงสัยว่ามันจะมีอะไรเจ๋งๆ ช่วยเรามั้ยน๊า ไปเปิด PHP Doc ดูก็เจอ compact กับ extract ครับ ไม่พูดพร่ำทำเพรงให้เยิ่นเย้อ&#8230; ดูตัวอย่างโค้ดเลยดีกว่า function get_something&#40;&#41; &#123; $id = 10; $foo = &#34;bar&#34;; return compact&#40;'id', 'foo'&#41;; &#125; &#160; extract&#40;get_something&#40;&#41;&#41;; echo $id; // ได้ผลลัพธ์เป็น 10 echo $foo; // ได้ผลลัพธ์เป็น bar อธิบายสั้นๆ compact &#8211; สร้าง array จากตัวแปรที่กำหนด ในตัวอย่างจะได้ array ที่มีเนื้อหาดังนี้ ( [...]]]></description>
			<content:encoded><![CDATA[<p>ปกติส่งตัวแปรหลายๆ ตัวข้าม function ใน PHP ผมจะสร้าง array แล้วโยนไปโยนมาครับ</p>
<p>เมื่อคืนเกิดสงสัยว่ามันจะมีอะไรเจ๋งๆ ช่วยเรามั้ยน๊า ไปเปิด PHP Doc ดูก็เจอ <a href="http://th.php.net/compact">compact</a> กับ <a href="http://th.php.net/extract">extract</a> ครับ</p>
<p>ไม่พูดพร่ำทำเพรงให้เยิ่นเย้อ&#8230; ดูตัวอย่างโค้ดเลยดีกว่า</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> get_something<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$id</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$foo</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;bar&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #990000;">compact</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'id'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'foo'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #990000;">extract</span><span style="color: #009900;">&#40;</span>get_something<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$id</span><span style="color: #339933;">;</span>              <span style="color: #666666; font-style: italic;">// ได้ผลลัพธ์เป็น 10</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$foo</span><span style="color: #339933;">;</span>            <span style="color: #666666; font-style: italic;">// ได้ผลลัพธ์เป็น bar</span></pre></div></div>

<h3>อธิบายสั้นๆ</h3>
<p><a href="http://th.php.net/compact">compact</a> &#8211; สร้าง array จากตัวแปรที่กำหนด ในตัวอย่างจะได้ array ที่มีเนื้อหาดังนี้</p>

<div class="wp_syntax"><div class="code"><pre class="generic" style="font-family:monospace;">(
   'id' =&gt; ค่าที่อยู่ในตัวแปร $id, 
   'foo' =&gt; ค่าที่อยู่ในตัวแปร $foo    
)</pre></div></div>

<p><a href="http://th.php.net/extract">extract</a> &#8211; ทำตรงกันข้ามกับ compact (ขี้เกียจเขียนล่ะ 555)</p>
]]></content:encoded>
			<wfw:commentRss>http://nattster.siamdev.net/2009/12/compact-extract-php/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>มาดูวิธีเช็ค ว่า &#8220;เขามั่วรหัสประชาชนรึเปล่า?&#8221;</title>
		<link>http://nattster.siamdev.net/2006/09/id-verification/</link>
		<comments>http://nattster.siamdev.net/2006/09/id-verification/#comments</comments>
		<pubDate>Fri, 08 Sep 2006 08:37:21 +0000</pubDate>
		<dc:creator>nattster</dc:creator>
				<category><![CDATA[คอมพิวเตอร์จ๋า]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://nattster.siamdev.net/?p=4</guid>
		<description><![CDATA[ขอเริ่มบทความแบบพิสดารบ้างได้ไหมครับ ก่อนอ่านบทความต่อไป ผมขอนำเสนอ หมอดูที่ชื่อว่า &#8220;แม่นมั่กๆ&#8221; หมอดู แม่นมั่กๆ หมอดู แม่นมั่กๆ สามารถทำนายรหัสประชาชนหลักที่ 13 จาก รหัสประชาชน 12 หลักแรกได้ครับ ไม่เชื่อก็ลองกรอกรหัสประชาชน 12 หลักแรกลงในช่องต่อไปนี้ดูครับ รหัสประชาชน โอ๊ะ ทำได้ไงเนี่ย อยากรู้หละสิ ถ้าอยากรู้มาลองอ่านบทความต่อสิครับ ^_^ รหัสประจำตัวประชาชน (ขอเรียกสั้นๆว่า รหัสประชาชน) ที่เราจะมาตรวจกันวันนี้เป็นรหัสประชาชน ของคนไทยนะครับ ก่อนอื่น ให้เพื่อนๆ หยิบบัตรประชาชนของเพื่อนๆ ขึ้นมาดูกันเลยครับ รหัสประจำตัวของเราจะอยู่ในรูป x-xxxx-xxxxx-xx-x (เลข 13 หลัก) ใช่มั้ยครับ แต่เพื่อนๆ รู้ป่ะว่า จริงๆแล้ว รหัสประจำตัวของเราเนี่ย จริงๆ แล้วมีแค่ 12 หลักเท่านั้น (12 หลักแรก) แต่เลขตัวสุดท้ายเนี่ย เป็น Check Digit ครับ Check [...]]]></description>
			<content:encoded><![CDATA[<p>ขอเริ่มบทความแบบพิสดารบ้างได้ไหมครับ ก่อนอ่านบทความต่อไป ผมขอนำเสนอ หมอดูที่ชื่อว่า &#8220;แม่นมั่กๆ&#8221;</p>
<h3>หมอดู แม่นมั่กๆ</h3>
<p>หมอดู แม่นมั่กๆ สามารถทำนายรหัสประชาชนหลักที่ 13 จาก รหัสประชาชน 12 หลักแรกได้ครับ ไม่เชื่อก็ลองกรอกรหัสประชาชน 12 หลักแรกลงในช่องต่อไปนี้ดูครับ</p>
<div style="margin: 10px; padding: 10px; width: 300px; background-color: #f1f1f1;">
<form name="wiz" onsubmit="predict(document.wiz.id.value); return false;">รหัสประชาชน</p>
<input maxlength="12" name="id" size="12" type="text" />
<input onclick="return predict(document.wiz.id.value);" type="submit" value="ทำนายสิ" />
<script src="http://nattster.siamdev.net/tmp/predictor.js" type="text/javascript"></script><br />
 </form>
<div id="lnum"><!-- --></div>
</div>
<p>โอ๊ะ ทำได้ไงเนี่ย อยากรู้หละสิ ถ้าอยากรู้มาลองอ่านบทความต่อสิครับ ^_^  <span id="more-4"></span> รหัสประจำตัวประชาชน (ขอเรียกสั้นๆว่า รหัสประชาชน) ที่เราจะมาตรวจกันวันนี้เป็นรหัสประชาชน  ของคนไทยนะครับ ก่อนอื่น ให้เพื่อนๆ หยิบบัตรประชาชนของเพื่อนๆ ขึ้นมาดูกันเลยครับ  รหัสประจำตัวของเราจะอยู่ในรูป x-xxxx-xxxxx-xx-x (เลข 13 หลัก) ใช่มั้ยครับ แต่เพื่อนๆ รู้ป่ะว่า  จริงๆแล้ว รหัสประจำตัวของเราเนี่ย จริงๆ แล้วมีแค่ 12 หลักเท่านั้น (12 หลักแรก) แต่เลขตัวสุดท้ายเนี่ย  เป็น Check Digit ครับ</p>
<h3>Check Digit คืออะไรหนอ?</h3>
<p>Check Digit เป็นตัวเลข 1 หลัก ที่เกิดจากการนำเลขหลักอื่นๆ มา บวก ลบ คูณ หาร กัน และ  Check Digit นี่หละครับ จะช่วยให้เราตรวจสอบในเบื้องต้นได้ว่า ข้อมูลที่กรอกมาถูกต้องรึเปล่า  เวลาเราจะตรวจสอบว่าข้อมูลที่กรอกมาถูกต้องรึเปล่า เราจะคำนวณ Check Digit จากเลขหลักอื่นๆ  เพื่อเปรียบเทียบกับ Check Digit ที่เขากรอกมาว่าตรงกันมั้ย ถ้าตรงกันก็แสดงว่าข้อมูลถูกต้องไม่ผิด ไม่มั่ว  แต่ถ้าไม่ตรงกัน ก็แปลว่า ข้อมูลที่กรอกมามีข้อมูลซักหลัก หรือ สองหลักที่ผิด เราก็สามารถเตือนให้ผู้ใช้ทราบและกรอกใหม่  อีกครั้งได้</p>
<h3>เอ้า มาลองคำนวณ Check Digit ของรหัสประชาชนเรากันดีกว่า</h3>
<p>ขอยกตัวอย่างรหัสประชาชนนี้ละกันครับ  <code class="geshifilter text">1-2015-41462-23-4</code> ไหน ตอบหน่อยซิ ว่า Check Digit ของรหัสประชาชนนี้คือเลขอะไรคร้าบ&#8230;&#8230;.  เอ้า ถามเองตอบเองก็ได้ Check Digit ของรหัสประชาชนนี้คือเลข 4 (เลขตัวสุดท้ายนั่นเอง)  เรามาดูกันว่า เลข 4 เกิดจากอะไรหว่า? คำนวณมาได้ไง? มั่วอ๊ะเปล่า?</p>
<ul>
<li><span class="att">ขั้นตอนที่ 1</span> &#8211; เอาเลข 12 หลักมา เขียนแยกหลักกันก่อน (หลักที่ 13 ไม่ต้องเอามานะคร้าบ)<br />
<table style="border-color: #000000; border-collapse: collapse;" border="1">
<tbody>
<tr>
<th width="20">1</th>
<th width="20">2</th>
<th width="20">0</th>
<th width="20">1</th>
<th width="20">5</th>
<th width="20">4</th>
<th width="20">1</th>
<th width="20">4</th>
<th width="20">6</th>
<th width="20">2</th>
<th width="20">2</th>
<th width="20">3</th>
</tr>
</tbody>
</table>
</li>
<li><span class="att">ขั้นตอนที่ 2</span> &#8211; เอาเลข 12 หลักนั้นมา คูณเข้ากับเลขประจำหลักของมัน<br />
<table style="border-color: #000000; border-collapse: collapse;" border="1">
<tbody>
<tr>
<th>รหัสบัตร</th>
<th width="20">1</th>
<th width="20">2</th>
<th width="20">0</th>
<th width="20">1</th>
<th width="20">5</th>
<th width="20">4</th>
<th width="20">1</th>
<th width="20">4</th>
<th width="20">6</th>
<th width="20">2</th>
<th width="20">2</th>
<th width="20">3</th>
</tr>
<tr>
<th>ตัวคูณ</th>
<th>13</th>
<th>12</th>
<th>11</th>
<th>10</th>
<th>9</th>
<th>8</th>
<th>7</th>
<th>6</th>
<th>5</th>
<th>4</th>
<th>3</th>
<th>2</th>
</tr>
<tr>
<th colspan="13" height="1"></th>
</tr>
<tr>
<th>ผลคูณ</th>
<th>13</th>
<th>24</th>
<th>0</th>
<th>10</th>
<th>45</th>
<th>32</th>
<th>7</th>
<th>24</th>
<th>30</th>
<th>8</th>
<th>6</th>
<th>6</th>
</tr>
</tbody>
</table>
</li>
<li><span class="att">ขั้นตอนที่ 3</span> &#8211; เอาผลคูณทั้ง 12 ตัวมา บวกกันทั้งหมด จะได้ 13+24+0+10+45+32+7+24+30+8+6+6=205</li>
<li><span class="att">ขั้นตอนที่ 4</span> &#8211; เอาเลขที่ได้จากขั้นตอนที่ 3 มา mod 11 (หารเอาเศษ) จะได้ 205 mod 11 = 7</li>
<li><span class="att">ขั้นตอนที่ 5</span> &#8211; เอา 11 ตั้ง ลบออกด้วย เลขที่ได้จากขั้นตอนที่ 4 จะได้ 11-7 = 4 (เราจะได้ 4 เป็นเลขในหลัก Check Digit)  ถ้าเกิด ลบแล้วได้ออกมาเป็นเลข 2 หลัก ให้เอาเลขในหลักหน่วยมาเป็น Check Digit (เช่น 11 ให้เอา 1 มา, 10 ให้เอา 0 มา เป็นต้น)</li>
</ul>
<p>โอ้โห&#8230;.มหัศจรรย์มาก ยอดเยี่ยมกระเทียมดอง เลขที่ได้ตรงกับเลขหลักที่ 13 ด้วยแหละ&#8230;ถ้าไม่เชื่อก็เอาเลขบัตรประชาชนตัวเองมาคำนวณดูสิครับ  ผมคิดว่าหลายๆ คนคงมีคำถามในใจแล้วหละว่า ทำไมต้องเอามาคูณ 13 ทำไมต้องเอามา บวกกัน ทำไมต้องเอามา mod 11 คำตอบที่ผมให้ได้ก็คือ  มันคือวิธีที่ถูกเลือกใช้ในการคำนวณ Check Digit ให้กับรหัสประชาชนครับ แต่ถ้าเราจะคำนวณ Check Digit ให้กับรหัสสินค้า หรือ ISBN ของหนังสือ เราก็ต้องใช้วิธีการคำนวณ  ที่แตกต่างกันออกไปครับ<br />
<script type="text/javascript"><!--
google_ad_client = "pub-5366864020460148";
/* 468x60, created 7/22/09 */
google_ad_slot = "8532721966";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>ในเมื่อรู้วิธีแล้ว เรามาเขียนโปรแกรมตรวจสอบกันดีกว่า</h3>
<p>ผมเขียนไว้ให้หลายภาษาเหมือนกัน ให้เพื่อนๆ เลือกใช้ได้ตามสะดวกนะครับ</p>
<h3>เวอร์ชัน JavaScript</h3>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script language<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;javascript&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #003366; font-weight: bold;">function</span> checkID<span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>id.<span style="color: #660066;">length</span> <span style="color: #339933;">!=</span> <span style="color: #CC0000;">13</span><span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> sum<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">12</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
        sum <span style="color: #339933;">+=</span> parseFloat<span style="color: #009900;">&#40;</span>id.<span style="color: #660066;">charAt</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">13</span><span style="color: #339933;">-</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">11</span><span style="color: #339933;">-</span>sum<span style="color: #339933;">%</span>11<span style="color: #009900;">&#41;</span><span style="color: #339933;">%</span>10<span style="color: #339933;">!=</span>parseFloat<span style="color: #009900;">&#40;</span>id.<span style="color: #660066;">charAt</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">12</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #003366; font-weight: bold;">function</span> checkForm<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>checkID<span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">form1</span>.<span style="color: #660066;">txtID</span>.<span style="color: #660066;">value</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'รหัสประชาชนไม่ถูกต้อง'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">else</span>
        <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'รหัสประชาชนถูกต้อง เชิญผ่านได้'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
&lt;form&gt;
รหัสประจำตัวประชาชน :
&lt;input name=&quot;txtID&quot; type=&quot;text&quot; /&gt;
&lt;input type=&quot;submit&quot; value=&quot;ตรวจสอบ&quot; /&gt;
&lt;/form&gt;</pre></div></div>

<h3>เวอร์ชัน php</h3>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span>
<span style="color: #000000; font-weight: bold;">function</span> checkID<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #cc66cc;">13</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sum</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">12</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
        <span style="color: #000088;">$sum</span> <span style="color: #339933;">+=</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">13</span><span style="color: #339933;">-</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">11</span><span style="color: #339933;">-</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sum</span><span style="color: #339933;">%</span><span style="color:#800080;">11</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">%</span><span style="color:#800080;">10</span> <span style="color: #339933;">==</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&lt;form action=&quot;?&quot; method=&quot;get&quot;&gt;
รหัสประจำตัวประชาชน :
&lt;input name=&quot;txtID&quot; type=&quot;text&quot; /&gt;
&lt;input type=&quot;submit&quot; value=&quot;ตรวจสอบ&quot; /&gt;
&lt;/form&gt;
<span style="color: #000000; font-weight: bold;">&lt;?</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'txtID'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>checkID<span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'txtID'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;รหัสถูกต้องครับ&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">else</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;รหัสที่คุณกรอกไม่ถูกต้องค&quot;</span><span style="color: #339933;">;</span> รับ
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<h3>เวอร์ชั่น ASP 3</h3>

<div class="wp_syntax"><div class="code"><pre class="asp" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;%</span>
<span style="color: #0000ff; font-weight: bold;">Function</span> checkID<span style="color: #006600; font-weight:bold;">&#40;</span>id<span style="color: #006600; font-weight:bold;">&#41;</span>
    checkID <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #0000ff; font-weight: bold;">False</span>
    <span style="color: #990099; font-weight: bold;">If</span> <span style="color: #330066;">Len</span><span style="color: #006600; font-weight:bold;">&#40;</span>id<span style="color: #006600; font-weight:bold;">&#41;</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #800000;">13</span> <span style="color: #990099; font-weight: bold;">Then</span>
        <span style="color: #990099; font-weight: bold;">Dim</span> i, sum
        <span style="color: #990099; font-weight: bold;">For</span> i <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #800000;">1</span> <span style="color: #990099; font-weight: bold;">To</span> <span style="color: #800000;">12</span>
            sum <span style="color: #006600; font-weight: bold;">=</span> sum + <span style="color: #990099; font-weight: bold;">CInt</span><span style="color: #006600; font-weight:bold;">&#40;</span>Mid<span style="color: #006600; font-weight:bold;">&#40;</span>id, i, <span style="color: #800000;">1</span><span style="color: #006600; font-weight:bold;">&#41;</span><span style="color: #006600; font-weight:bold;">&#41;</span><span style="color: #006600; font-weight: bold;">*</span><span style="color: #006600; font-weight:bold;">&#40;</span><span style="color: #800000;">14</span>-i<span style="color: #006600; font-weight:bold;">&#41;</span>
        <span style="color: #990099; font-weight: bold;">Next</span>
        <span style="color: #990099; font-weight: bold;">If</span> <span style="color: #006600; font-weight:bold;">&#40;</span><span style="color: #800000;">11</span>-<span style="color: #006600; font-weight:bold;">&#40;</span>sum Mod <span style="color: #800000;">11</span><span style="color: #006600; font-weight:bold;">&#41;</span><span style="color: #006600; font-weight:bold;">&#41;</span> Mod <span style="color: #800000;">10</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #990099; font-weight: bold;">CInt</span><span style="color: #006600; font-weight:bold;">&#40;</span>Mid<span style="color: #006600; font-weight:bold;">&#40;</span>id, i, <span style="color: #800000;">13</span><span style="color: #006600; font-weight:bold;">&#41;</span><span style="color: #006600; font-weight:bold;">&#41;</span> <span style="color: #990099; font-weight: bold;">Then</span>
            checkID <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #0000ff; font-weight: bold;">True</span>
        <span style="color: #990099; font-weight: bold;">End</span> <span style="color: #990099; font-weight: bold;">If</span>
    <span style="color: #990099; font-weight: bold;">End</span> <span style="color: #990099; font-weight: bold;">If</span>
<span style="color: #990099; font-weight: bold;">End</span> <span style="color: #0000ff; font-weight: bold;">Function</span>
<span style="color: #000000; font-weight: bold;">%&gt;</span>
&lt;form action=&quot;?&quot; method=&quot;get&quot;&gt;
รหัสประจำตัวประชาชน :
&lt;input name=&quot;txtID&quot; type=&quot;text&quot; /&gt;
&lt;input type=&quot;submit&quot; value=&quot;ตรวจสอบ&quot; /&gt;
&lt;/form&gt;
<span style="color: #000000; font-weight: bold;">&lt;%</span>
<span style="color: #990099; font-weight: bold;">If</span> <span style="color: #990099; font-weight: bold;">Request</span><span style="color: #006600; font-weight:bold;">&#40;</span><span style="color: #cc0000;">&quot;txtID&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span> <span style="color: #006600; font-weight: bold;">&amp;</span>lt<span style="color: #006600; font-weight: bold;">;&amp;</span>gt<span style="color: #006600; font-weight: bold;">;</span> <span style="color: #cc0000;">&quot;&quot;</span> <span style="color: #990099; font-weight: bold;">Then</span>
    <span style="color: #990099; font-weight: bold;">If</span> checkID<span style="color: #006600; font-weight:bold;">&#40;</span><span style="color: #990099; font-weight: bold;">Request</span><span style="color: #006600; font-weight:bold;">&#40;</span><span style="color: #cc0000;">&quot;txtID&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span><span style="color: #006600; font-weight:bold;">&#41;</span> <span style="color: #990099; font-weight: bold;">Then</span>
        <span style="color: #990099; font-weight: bold;">Response</span>.<span style="color: #330066;">Write</span> <span style="color: #cc0000;">&quot;รหัสถูกต้องครับ&quot;</span>
    <span style="color: #990099; font-weight: bold;">Else</span>
        <span style="color: #990099; font-weight: bold;">Response</span>.<span style="color: #330066;">Write</span> <span style="color: #cc0000;">&quot;รหัสที่คุณกรอกไม่ถูกต้องครับ&quot;</span>
    <span style="color: #990099; font-weight: bold;">End</span> <span style="color: #990099; font-weight: bold;">If</span>
<span style="color: #990099; font-weight: bold;">End</span> <span style="color: #990099; font-weight: bold;">If</span>
<span style="color: #000000; font-weight: bold;">%&gt;</span></pre></div></div>

<p>จริงๆ แล้วถ้าเพื่อนๆ จะเอาไปใช้จริง ก็ Copy ไปเฉพาะฟังก์ชัน CheckID ก็ได้ครับ โดยพารามิเตอร์ตัวแรกของ CheckID ทั้ง 3 ภาษานี้คือ ข้อความที่เก็บรหัสประจำตัวประชาชนไว้ครับ<br />
ฟังก์ชันนี้จะคืนค่าเป็น True ถ้ารหัสถูกต้อง และคืนค่าเป็น False ถ้ารหัสผิดครับ</p>
<h3>สรุป</h3>
<p>เราได้เรียนรู้วิธีการตรวจสอบเบื้องต้น (ข้อย้ำว่าเบื้องต้น) เพราะรหัสประชาชนที่ผู้ใช้กรอก อาจมี Check Digit ที่ถูกต้อง แต่อาจเป็นรหัสประชาชนที่ไม่มีอยู่จริงก็ได้นะครับ<br />
<script type="text/javascript"><!--
google_ad_client = "pub-5366864020460148";
/* 468x60, created 7/22/09 */
google_ad_slot = "1450819552";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://nattster.siamdev.net/2006/09/id-verification/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>ข้อผิดพลาด 8 ข้อที่ทำให้เกิด Error บ่อยๆ</title>
		<link>http://nattster.siamdev.net/2005/11/8-most-frequent-errors-in-php/</link>
		<comments>http://nattster.siamdev.net/2005/11/8-most-frequent-errors-in-php/#comments</comments>
		<pubDate>Tue, 29 Nov 2005 09:06:23 +0000</pubDate>
		<dc:creator>tuwannu</dc:creator>
				<category><![CDATA[คอมพิวเตอร์จ๋า]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://nattster.siamdev.net/?p=21</guid>
		<description><![CDATA[ในการเขียนสคริปต์ มีสิ่งหนึ่งที่ค่อนข้างตายตัวเลยว่าคงไม่มีใครสามารถเขียนสคริปต์ออกมาได้ เลิศเลอเพอร์เฟกต์ ขนาดที่ว่าไม่มีข้อผิดพลาดเลย บทความนี้ก็จะมาพูดถึงข้อผิดพลาดเล็กๆน้อยๆ ที่เกิดขึ้นบ่อยครั้ง และมองเห็นได้ยากพอสมควรเคยเป็นบ้างไหมว่ามันน่าเจ็บใจยิ่งนักที่ค้นหาข้อผิดพลาดเป็นชั่วโมงๆ แต่ท้ายสุดเพียงแก้ไขตัวอักษรตัวเดียว สคริปต์ก็ทำงานได้แล้ว การที่เราให้เวลากับการเขียนสคริปต์เป็นเวลานานๆ อาจทำให้เกิดความมึนงง และสร้างข้อผิดพลาดได้ง่ายขึ้น ซึ่ง 8 ข้อผิดพลาดที่เราจะพูดถึงนี้เป็นข้อผิดพลาดที่เกิดขึ้นบ่อยครั้งกับตัวผม และบางทีผมก็พบว่าเรามองข้ามมันไปได้ง่ายๆ แล้วไปสนใจกับส่วนอื่นๆ ที่อาจไม่มี error เลย ซึ่งทำให้เสียเวลาเป็นอย่างมากเลยทีเดียว ถึงแม้ว่ามันจะเป็นเรื่องพื้นๆ แต่ผมคิดว่ามันก็สร้างปัญหาได้ไม่น้อยเหมือนกัน มีอะไรบ้าง? เครื่องหมายอัฒภาค (semicolon ; ) หายไป เครื่องหมายเท่ากับ (= หรือ ==) การพิมพ์ชื่อตัวแปรผิด เครื่องหมายดอลล่าร์ที่หายไป เครื่องหมายอัญประกาศ ฟังค์ชั่นพิเศษ ทำงานกับอะเรย์ เครื่องหมายปิดเปิดไม่ครบ เครื่องหมายอัฒภาค (semicolon ; ) หายไป การทำงานของ php จะคล้ายกับภาษาจำพวก Java ที่ถือว่าการขึ้นบรรทัดใหม่ ไม่ใช่จุดสิ้นของคำสั่งที่เรียกใช้งาน เมื่อเราต้องการบอก php ว่าคำสั่งนี้สิ้นสุดแล้ว ก็จะต้องใช้เครื่องหมายอัฒภาค ซึ่งในบางโอกาสเราก็ลืมได้ง่าย [...]]]></description>
			<content:encoded><![CDATA[<p>ในการเขียนสคริปต์ มีสิ่งหนึ่งที่ค่อนข้างตายตัวเลยว่าคงไม่มีใครสามารถเขียนสคริปต์ออกมาได้ เลิศเลอเพอร์เฟกต์ ขนาดที่ว่าไม่มีข้อผิดพลาดเลย บทความนี้ก็จะมาพูดถึงข้อผิดพลาดเล็กๆน้อยๆ ที่เกิดขึ้นบ่อยครั้ง และมองเห็นได้ยากพอสมควรเคยเป็นบ้างไหมว่ามันน่าเจ็บใจยิ่งนักที่ค้นหาข้อผิดพลาดเป็นชั่วโมงๆ แต่ท้ายสุดเพียงแก้ไขตัวอักษรตัวเดียว สคริปต์ก็ทำงานได้แล้ว<br />
การที่เราให้เวลากับการเขียนสคริปต์เป็นเวลานานๆ อาจทำให้เกิดความมึนงง และสร้างข้อผิดพลาดได้ง่ายขึ้น ซึ่ง 8 ข้อผิดพลาดที่เราจะพูดถึงนี้เป็นข้อผิดพลาดที่เกิดขึ้นบ่อยครั้งกับตัวผม และบางทีผมก็พบว่าเรามองข้ามมันไปได้ง่ายๆ แล้วไปสนใจกับส่วนอื่นๆ ที่อาจไม่มี error เลย ซึ่งทำให้เสียเวลาเป็นอย่างมากเลยทีเดียว<br />
ถึงแม้ว่ามันจะเป็นเรื่องพื้นๆ แต่ผมคิดว่ามันก็สร้างปัญหาได้ไม่น้อยเหมือนกัน<br />
<span id="more-21"></span></p>
<h3>มีอะไรบ้าง?</h3>
<ul>
<li>เครื่องหมายอัฒภาค (semicolon ; ) หายไป</li>
<li>เครื่องหมายเท่ากับ (= หรือ ==)</li>
<li>การพิมพ์ชื่อตัวแปรผิด</li>
<li>เครื่องหมายดอลล่าร์ที่หายไป</li>
<li>เครื่องหมายอัญประกาศ</li>
<li>ฟังค์ชั่นพิเศษ</li>
<li>ทำงานกับอะเรย์</li>
<li>เครื่องหมายปิดเปิดไม่ครบ</li>
</ul>
<h3>เครื่องหมายอัฒภาค (semicolon ; ) หายไป</h3>
<p>การทำงานของ php จะคล้ายกับภาษาจำพวก Java ที่ถือว่าการขึ้นบรรทัดใหม่ ไม่ใช่จุดสิ้นของคำสั่งที่เรียกใช้งาน เมื่อเราต้องการบอก php ว่าคำสั่งนี้สิ้นสุดแล้ว ก็จะต้องใช้เครื่องหมายอัฒภาค ซึ่งในบางโอกาสเราก็ลืมได้ง่าย เช่นการขึ้นบรรทัดใหม่เลยโดยที่ไม่ได้ใช้เครื่องหมาย ; ต่อท้ายบรรทัดก่อนหน้า</p>
<h3>เครื่องหมายเท่ากับ</h3>
<p>เหตุการณ์นี้เกิดขึ้นกับผมค่อนข้างบ่อย โดยเฉพาะเวลาที่เราใช้ร่วมกับ if เช่น&#8230;</p>
<pre class="geshifilter text">&lt;?
if($foo = 'bar')
{
      echo 'equal';

}
?&gt;</pre>
<p>ในกรณีด้านบน ไม่ว่าในตัวแปร $foo จะมีอะไร เราก็จะได้ equal ออกมาตลอด เพราะอะไรหรือ?<br />
ในส่วนของข้อกำหนดของ if เราได้ใส่ $foo = &#8216;bar&#8217; เอาไว้ ซึ่งการใช้เครื่องหมายเท่ากับเพียงอันเดียว เป็นการนำข้อมูลที่อยู่ทางด้านขวา ใส่ลงไปในด้านซ้ายของเครื่องหมายเท่ากับ และในกรณีแบบนี้ ในส่วนของ if ก็จะได้ค่าเป็น TRUE เสมอ เพราะเราสามารถใส่ข้อความลงไปในตัวแปร $foo ได้ มันจึงขึ้นข้อความ equal ออกมาตลอด ถึงแม้ว่า $foo จะไม่เท่ากับ bar<br />
สคริปต์ที่ถูกต้อง จะต้องใช้ $foo == &#8216;bar&#8217; ซึ่งเป็นเหมือนการถามว่า $foo มีค่าเป็น bar หรือไม่ ถ้าไม่ มันก็จะคืนค่าเป็น FALSE และเมื่อ $foo ไม่เท่ากับ bar มันก็จะไม่แสดงผลลัพธ์ เพราะฉะนั้น ระวังว่าการใช้เครื่องหมายเท่ากับในกรณีไหน ต้องใช้กี่ตัว หากเป็นการกำหนดค่าให้กับตัวแปร ก็ใช้ = ครั้งเดียว แต่ถ้าเป็นการเปรียบเทียบ ต้องเป็น ==</p>
<h3>การพิมพ์ชื่อตัวแปรผิด</h3>
<p>เนื่องจาก php จะประมวลผลในแบบ case-sensitive ซะส่วนใหญ่ เราจึงต้องมีความระมัดระวังในเรื่องของการใช้ตัวเล็กตัวใหญ่เวลาตั้งชื่อ<br />
$testVariable เป็นคนละตัวแปรกับ $testvariable</p>
<h3>เครื่องหมายดอลล่าร์ที่หายไป</h3>
<p>เคยบ้างไหมเวลาที่เราลืมตัว แล้วลืมพิมพ์เครื่องหมาย $ ด้านหน้าตัวแปร ซึ่งทำให้ php เกิด error ขึ้นได้ ถ้ามันเป็น constant ก็ว่าไปอีกเรื่องหนึ่ง แต่ถ้าหากเป็นตัวแปร จะต้องมี $ อยู่ด้านหน้าชื่อตัวแปรเสมอ</p>
<h3>เครื่องหมายอัญประกาศ</h3>
<p>การกำหนดข้อความให้เป็น string ใน php มีอยู่สองแบบ คือการล้อมรอบข้อความด้วย &#8216; ขีดเดียว หรือ &#8221; แบบสองขีด ซึ่งจะให้ความหมายค่อนข่างต่างกัน<br />
ในส่วนของ &#8216; ขีดเดียว เราจะไม่สามารถใส่ escape character ได้ และไม่มีความจำเป็นที่จะต้อง escape ตัวอักษรจำพวก \t \n ฯลฯ แต่ถ้าหากคุณต้องการเชื่อมตัวแปรกับเข้ากับข้อความ ก็จะต้องมีการปิดเครื่องหมายก่อน แล้วตามด้วยเครื่องหมายเชื่อมข้อความ นั่นคือ . เช่น&#8230;</p>
<pre class="geshifilter text">&lt;?
$foo = 'bar ' . $text . ' bar';

?&gt;</pre>
<p>แต่ เมื่อคุณใช้ &#8221; สองขีด หากคุณต้องใช้เครื่องหมายจำพวก /n แต่ไม่ต้องการให้เป็นการขึ้นบรรทัดใหม่ การใส่เครื่องหมายคำพูดลงในข้อความ ก็จะต้องมีการ escape ก่อน<br />
ใส่ / ไว้ที่ด้านหน้าของตัวอักษรที่ต้องการ escape เช่น ใช้ /&#8221; แทน &#8221; ธรรมดา</p>
<h3>ฟังค์ชั่นพิเศษ</h3>
<p>ฟังค์ชั่นบางอย่าง อาจจะมีความต้องการมากกว่าฟังค์ชั่นทั่วๆไป เช่น บางฟังค์ชั่นจะใช้ได้ก็ต่อเมื่อเราลง library เพิ่ม เช่นการใช้งาน GD หากเราไม่ได้ลงไว้ แต่เรียกใช้ฟังค์ชั่น มันก็จะขึ้น error<br />
ฟังค์ชั่นอีกจำพวกนึงที่มีความต้องการพิเศษ ก็จำพวก header() ที่จะต้องใช้ในส่วนบนสุดของไฟล์ เช่น</p>
<pre class="geshifilter text">&lt;?

header("Location: http://www.21nu.net");
?&gt;</pre>
<p>โค๊ด ด้านบนจะเห็นได้ว่ามีบรรทัดว่างๆอยู่ก่อนหน้าที่เราจะเปิด &lt;? ซึ่งจะทำให้เกิด error ทันที เพราะ header จะต้องอยู่ส่วนบนสุด ห้ามไม่ให้มีข้อความใดๆถูกส่งไปก่อน ถึงแม้ว่าจะเป็นช่องว่างก็ตาม โค๊ดที่ทำงานได้จะต้องเป็นดังนี้&#8230;</p>
<pre class="geshifilter text">&lt;?
header("Location: http://www.21nu.net");
?&gt;</pre>
<h3>ทำงานกับอะเรย์</h3>
<p>การนับเลขในอะเรย์ เริ่มจาก 0 เสมอ ไม่ใช่หนึ่ง เช่น</p>
<pre class="geshifilter text">&lt;?
$foo = array("apple", "banana", "coconut");
?&gt;</pre>
<p>หากเราต้องการเรียกใช้ apple ก็จะต้องเรียก $foo[0] หากเรียก $foo[1] ก็จะได้ banana ครับ</p>
<h3>เครื่องหมายปิดเปิดไม่ครบ</h3>
<p>เมื่อเราต้องใช้ control structures บวกกับฟังค์ชั่นอื่นๆหลายๆอัน อาจทำให้เกิดความสับสน และปิดวงเล็บไม่ครบด้วย จึงต้องระวังเอาไว้ นับวงเล็บเปิดกับปิดให้ดี</p>
<pre class="geshifilter text">&lt;?
if(isset($foo)
{
       echo '$foo is set';
} else {

      for($i=0;$i &lt; 5; $i++)
      {
             echo '$foo is not set';

}
?&gt;</pre>
<p>หาเจอหรือไม่ ว่าปิดไม่ครบตรงไหนบ้าง</p>
]]></content:encoded>
			<wfw:commentRss>http://nattster.siamdev.net/2005/11/8-most-frequent-errors-in-php/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
