<?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>Php LifeStyle :My Php and My LifeStyle &#187; PHP</title>
	<atom:link href="http://www.phplifestyle.com/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.phplifestyle.com</link>
	<description>PHP Security and Optimization</description>
	<lastBuildDate>Mon, 05 Apr 2010 22:22:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>top 100 keywords  from shopping au,us,uk,de</title>
		<link>http://www.phplifestyle.com/223/top-100-keywords-from-shopping-auusukde/</link>
		<comments>http://www.phplifestyle.com/223/top-100-keywords-from-shopping-auusukde/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 06:13:10 +0000</pubDate>
		<dc:creator>tumaji</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[keyword]]></category>
		<category><![CDATA[shopping.com]]></category>

		<guid isPermaLink="false">http://www.phplifestyle.com/?p=223</guid>
		<description><![CDATA[วันนี้แจก top 100 keywords จาก shopping au,us,uk,de ครับ สำหรับเอาไปใช้หาช่องทางทำงาน
สำหรับใครที่เอาไปแล้วเกิดรายได้อย่าลืมทำบุญน่ะครับ ^-^
http://hotfile.com/dl/24973635/7cbc30e/keyword.rar.html
]]></description>
			<content:encoded><![CDATA[<p>วันนี้แจก top 100 keywords จาก shopping au,us,uk,de ครับ สำหรับเอาไปใช้หาช่องทางทำงาน</p>
<p>สำหรับใครที่เอาไปแล้วเกิดรายได้อย่าลืมทำบุญน่ะครับ ^-^</p>
<p>http://hotfile.com/dl/24973635/7cbc30e/keyword.rar.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phplifestyle.com/223/top-100-keywords-from-shopping-auusukde/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Epson Photo R230</title>
		<link>http://www.phplifestyle.com/148/epson-photo-r230/</link>
		<comments>http://www.phplifestyle.com/148/epson-photo-r230/#comments</comments>
		<pubDate>Wed, 27 May 2009 16:33:31 +0000</pubDate>
		<dc:creator>tumaji</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Epson R230]]></category>
		<category><![CDATA[IP3000]]></category>
		<category><![CDATA[print CD]]></category>
		<category><![CDATA[r230 Print CD ไม่ได้]]></category>

		<guid isPermaLink="false">http://www.phplifestyle.com/?p=148</guid>
		<description><![CDATA[หลังจาก canon IP3000 สิ้นชีพไปอย่างไม่สามารถกลับมาดีดังเดิมได้ (กดปุ่ม Resume ค้างไว้ดันพังได้) เลยลงทุนซื้อ printer ใหม่ที่สามารถ print CD ได้อยากได้ที่มันถูกๆแต่ที่สารคามไม่มีเลยจำเป็นต้องซื้อ Epson R230 เพราะรุ่นอื่นยี่ห้ออื่นไม่มีขาย หลังจากได้มาแล้วก็ทำการแกะกล่อง อ้าวไม่มีของแถมเลยกระดาษ photo สักแผ่นก็ไม่มี (ตอนซื้อ Conon IP3000) แถมเยอะมาก เอ้าว่ะไหนๆก็ซื้อมาแล้วเห็นเค้าบอกว่าสุดยอดลองดูหน่อยแล้วกัน

อันดับแรกเลยต้องลอง Print CD เนื่องจากเป็นวัตถุประสงค์หลักของการซื้อรุ่นนี้ โปรแกรมที่ใช้ก็เป็น Epson Print CD� ที่อยู่ในแผ่น driver ที่มากับเครื่อง หลังจากออกแบบเสร็จก็ทำการสั่ง Print� ปรากฏว่า Print CD ไม่ได้ เอาหล่ะสิ ทดสอบอยู่หลายรอบยัง Print ไม่ได้มีอะไรผิดพลาดแน่ๆก็เลยลอง ถามเฮีย goo ดู แกก็ให้คำตอบมาเยอะสุดท้ายไปเจอคำตอบที่ให้ข้อสอบสรุปว่ามันเป็นปัญหาทางเทคนิค นั้นคือ Printer ตั้งชิดผนังเกินไปเลย Print CD ไม่ได้ [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://phplifestyle.com/wp-content/uploads/2009/05/27052009009.jpg"></a>หลังจาก canon IP3000 สิ้นชีพไปอย่างไม่สามารถกลับมาดีดังเดิมได้ (กดปุ่ม Resume ค้างไว้ดันพังได้) เลยลงทุนซื้อ printer ใหม่ที่สามารถ print CD ได้อยากได้ที่มันถูกๆแต่ที่สารคามไม่มีเลยจำเป็นต้องซื้อ Epson R230 เพราะรุ่นอื่นยี่ห้ออื่นไม่มีขาย หลังจากได้มาแล้วก็ทำการแกะกล่อง <a href="http://phplifestyle.com/wp-content/uploads/2009/05/27052009001.jpg"><img class="alignleft size-medium wp-image-150" title="27052009001" src="http://phplifestyle.com/wp-content/uploads/2009/05/27052009001-300x225.jpg" alt="" width="300" height="225" /></a>อ้าวไม่มีของแถมเลยกระดาษ photo สักแผ่นก็ไม่มี (ตอนซื้อ Conon IP3000) แถมเยอะมาก เอ้าว่ะไหนๆก็ซื้อมาแล้วเห็นเค้าบอกว่าสุดยอดลองดูหน่อยแล้วกัน<img class="alignnone size-medium wp-image-168" title="27052009(004)" src="http://www.phplifestyle.com/wp-content/uploads/2009/05/270520090041-225x300.jpg" alt="27052009(004)" width="225" height="300" /></p>
<p><a href="http://www.phplifestyle.com/wp-content/uploads/2009/05/27052009004.jpg"></a></p>
<p>อันดับแรกเลยต้องลอง Print CD เนื่องจากเป็นวัตถุประสงค์หลักของการซื้อรุ่นนี้ โปรแกรมที่ใช้ก็เป็น Epson Print CD� ที่อยู่ในแผ่น driver ที่มากับเครื่อง หลังจากออกแบบเสร็จก็ทำการสั่ง Print� ปรากฏว่า Print CD ไม่ได้ เอาหล่ะสิ ทดสอบอยู่หลายรอบยัง Print ไม่ได้มีอะไรผิดพลาดแน่ๆก็เลยลอง ถามเฮีย goo ดู แกก็ให้คำตอบมาเยอะสุดท้ายไปเจอคำตอบที่ให้ข้อสอบสรุปว่ามันเป็นปัญหาทางเทคนิค นั้นคือ <strong>Printer ตั้งชิดผนังเกินไปเลย Print CD ไม่ได้</strong> ?????? งงหล่ะสิทำไมมันเป็นอย่างนั้นก็เพราะว่าถาดที่ใส่ CD มันจะยื่นออกไปด้านหลังนั้นเอง โอ้แม่เจ้าใครจะไปรู้ว่ามันจะทะลึ่งยื่นถาดออกไป ก็ IP3000 มันไม่เห็นยื่นอะไรออกไปเลย</p>
<div id="attachment_151" class="wp-caption aligncenter" style="width: 235px"><a href="http://www.phplifestyle.com/wp-content/uploads/2009/05/27052009004.jpg"><img class="size-medium wp-image-151 " title="27052009002" src="http://phplifestyle.com/wp-content/uploads/2009/05/27052009002-225x300.jpg" alt="ถาดยื่นไปข้างหลังเกือบ 20 cm." width="225" height="300" /></a><p class="wp-caption-text">ถาดยื่นไปข้างหลังเกือบ 20 cm.</p></div>
<p>�</p>
<p>นี่ถ้าไม่รู้ว่ามันต้องยื่นไปข้างหลังมีหวังได้ส่งเคลมแน่ๆนึกว่าเสีย� หลังจากสั่ง Print ได้ก็ลองไป 3 แผ่นเป็น CD รายงานวิจัยของ ม สังเกตุว่าของ Epson จะไม่สามารถปรับความละเอียดในการ Print CD ได้เลยไม่เหมือนกับ Canon สามารถปรับความละเอียดได้ นี้ถ้า IP 3000 ไม่พังก็คงได้ลองเอาผลงานมาเทียบกันเป็นแน่ สำหรับผลงานอง R230 แบบเต็มวงก็นับว่าดีเสียแต่ใช้เวลานานไปหน่อย</p>
<p style="text-align: center;"><img class="alignnone size-medium wp-image-167" title="27052009(012)" src="http://www.phplifestyle.com/wp-content/uploads/2009/05/27052009012-300x225.jpg" alt="27052009(012)" width="300" height="225" /></p>
<p>�อีกอย่างของ Epson จะมีช่องใส่กระดาษเพียงด้านเดียวแต่ของ Canon จะมีด้านบนกับถาดใส่กระดาษด้านล่างสามารถใส่กระดาษได้เยอะกว่าและสะดวกกว่า จริงๆแล้วของ Epson ก็มีดีหลายอย่างลองค้นๆหาข้อมูลดูแล้วกันครับมีคนชมเยอะเหมือนกัน</p>
<p>�</p>
<p>สรุปแล้วก็สามารถใช้งานได้ดีเสียแต่ราคาแพงกว่า Canon�เยอะไปหน่อย แต่รุ่นนี้ถ้าติด tank จะใช้งานได้ดีกว่าของ Canon ที่ติด�tank ครับสำหรับใครที่ชอบใช้หมึกราคาประหยัดน่าเล่น R230 มากกว่าจะไปเล่น Canon</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phplifestyle.com/148/epson-photo-r230/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>หมดกันสร้างมากับมือ !</title>
		<link>http://www.phplifestyle.com/117/%e0%b8%ab%e0%b8%a1%e0%b8%94%e0%b8%81%e0%b8%b1%e0%b8%99%e0%b8%aa%e0%b8%a3%e0%b9%89%e0%b8%b2%e0%b8%87%e0%b8%a1%e0%b8%b2%e0%b8%81%e0%b8%b1%e0%b8%9a%e0%b8%a1%e0%b8%b7%e0%b8%ad/</link>
		<comments>http://www.phplifestyle.com/117/%e0%b8%ab%e0%b8%a1%e0%b8%94%e0%b8%81%e0%b8%b1%e0%b8%99%e0%b8%aa%e0%b8%a3%e0%b9%89%e0%b8%b2%e0%b8%87%e0%b8%a1%e0%b8%b2%e0%b8%81%e0%b8%b1%e0%b8%9a%e0%b8%a1%e0%b8%b7%e0%b8%ad/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 18:32:26 +0000</pubDate>
		<dc:creator>tumaji</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[หมดกันสร้างมากับมือ]]></category>

		<guid isPermaLink="false">http://www.phplifestyle.com/?p=117</guid>
		<description><![CDATA[โฆษณาไทยดีๆอีกเรื่องที่เข้ากับยุคสมัย ดูแล้วหยุดคิดสักนิด ล้มแล้วจงรู้จักลุก

Music Video Code by 3gp Music and Video Site
]]></description>
			<content:encoded><![CDATA[<p>โฆษณาไทยดีๆอีกเรื่องที่เข้ากับยุคสมัย ดูแล้วหยุดคิดสักนิด ล้มแล้วจงรู้จักลุก<br />
<embed src="http://3gp.dinso.net/player.swf?config=%7Bembedded%3Atrue%2CemailVideoLink%3A%27%27%2CemailPostUrl%3A%27%27%2CshowOnLoadBegin%3Atrue%2CuseHwScaling%3Afalse%2CshowStopButton%3Atrue%2CmenuItems%3A%5Bfalse%2Cfalse%2Ctrue%2Ctrue%2Ctrue%2Cfalse%2Ctrue%5D%2CtimeDisplayFontColor%3A16763904%2CcontrolBarBackgroundColor%3A2437427%2CprogressBarColor2%3A0%2CprogressBarColor1%3A16777215%2CwatermarkLinkUrl%3A%27http%3A%2F%2F3gp.dinso.net%27%2CshowWatermark%3A%27fullscreen%27%2CwatermarkUrl%3A%27http%3A%2F%2F3gp.dinso.net%2Fwatermark2.png%27%2CcontrolsOverVideo%3A%27locked%27%2CcontrolBarGloss%3A%27high%27%2CuseNativeFullScreen%3Atrue%2CshowPlayListButtons%3Afalse%2CinitialScale%3A%27scale%27%2ChideControls%3Afalse%2Cloop%3Atrue%2CbufferLength%3A5%2CstartingBufferLength%3A2%2CautoBuffering%3Atrue%2CautoPlay%3Afalse%2CbaseURL%3A%27%27%2CuseSmoothing%3Atrue%2CplayList%3A%5B%7BoverlayId%3A%27play%27%2Cname%3A%27ClickToPlay%27%7D%2C%7BlinkWindow%3A%27_blank%27%2ClinkUrl%3A%27http%3A%2F%2F3gp.dinso.net%2Fmusicvideo.php%3Fvid%3D4987853e2%27%2Curl%3A%27http%3A%2F%2F3gp.dinso.net%2Fvideos.php%3Fvid%3D4987853e2%27%2Cname%3A%27%E0%B9%80%E0%B8%8B%E0%B8%B5%E0%B8%A2%E0%B8%87%E0%B9%80%E0%B8%9E%E0%B8%B5%E0%B8%A2%E0%B8%A7%E0%B8%AD%E0%B8%B4%E0%B9%8A%E0%B8%A7-%E0%B9%80%E0%B8%8B%E0%B8%B5%E0%B8%A2%E0%B8%87%E0%B9%80%E0%B8%9E%E0%B8%B5%E0%B8%A2%E0%B8%A7%E0%B8%AD%E0%B8%B4%E0%B9%8A%E0%B8%A7%27%7D%5D%7D" width="290" height="201" scale="noscale" bgcolor="111111" type="application/x-shockwave-flash" allowFullScreen="true" allowScriptAccess="always" allowNetworking="all" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
<p style="margin:3px 0px"><a href="http://3gp.dinso.net/-e0-b9-80-e0-b8-8b-e0-b8-b5-e0-b8-a2-e0-b8-87-e0-b9-80-e0-b8-9e-e0-b8-b5-e0-b8-a2-e0-b8-a7-e0-b8-ad-e0-b8-b4-e0-b9-8a-e0-b8-a7/-e0-b9-80-e0-b8-8b-e0-b8-b5-e0-b8-a2-e0-b8-87-e0-b9-80-e0-b8-9e-e0-b8-b5-e0-b8-a2-e0-b8-a7-e0-b8-ad-e0-b8-b4-e0-b9-8a-e0-b8-a7-video_4987853e2.html" target="_blank">Music Video Code by 3gp Music and Video Site</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phplifestyle.com/117/%e0%b8%ab%e0%b8%a1%e0%b8%94%e0%b8%81%e0%b8%b1%e0%b8%99%e0%b8%aa%e0%b8%a3%e0%b9%89%e0%b8%b2%e0%b8%87%e0%b8%a1%e0%b8%b2%e0%b8%81%e0%b8%b1%e0%b8%9a%e0%b8%a1%e0%b8%b7%e0%b8%ad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>แก้ปัญหาการย้ายสิ่งของ ด้วย PHP</title>
		<link>http://www.phplifestyle.com/79/%e0%b9%81%e0%b8%81%e0%b9%89%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%a2%e0%b9%89%e0%b8%b2%e0%b8%a2%e0%b8%aa%e0%b8%b4%e0%b9%88%e0%b8%87%e0%b8%82%e0%b8%ad%e0%b8%87/</link>
		<comments>http://www.phplifestyle.com/79/%e0%b9%81%e0%b8%81%e0%b9%89%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%a2%e0%b9%89%e0%b8%b2%e0%b8%a2%e0%b8%aa%e0%b8%b4%e0%b9%88%e0%b8%87%e0%b8%82%e0%b8%ad%e0%b8%87/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 19:35:27 +0000</pubDate>
		<dc:creator>tumaji</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[No MySQL]]></category>

		<guid isPermaLink="false">http://www.phplifestyle.com/?p=79</guid>
		<description><![CDATA[พอดีว่าผมไปเจอโจทย์ในการแก้ปัญหาด้วย PHP &#038; MySQL โดยโจทย์มีดังนี้

เกี่ยวกับเรื่อง ฐานข้อมูล กับ ตาราง
ตอนนี้มีตารางข้อมูล ที่ได้มาโดยการ select
itemlist_id    item name    quantity   capacity    user_id     slot use
 5                  ข้าวโพด     [...]]]></description>
			<content:encoded><![CDATA[<p>พอดีว่าผมไปเจอโจทย์ในการแก้ปัญหาด้วย PHP &#038; MySQL โดยโจทย์มีดังนี้</p>
<p><code><br />
เกี่ยวกับเรื่อง ฐานข้อมูล กับ ตาราง<br />
ตอนนี้มีตารางข้อมูล ที่ได้มาโดยการ select</p>
<p>itemlist_id    item name    quantity   capacity    user_id     slot use<br />
 5                  ข้าวโพด             2            15            1             1<br />
 32                   ขี้ไก่               9            50             1             1<br />
 76             ปลากระโทงแทง       6             5             1             2<br />
 79                 ปลาฉลาม          2             1             1             2<br />
 168                  เกลือ              1            50            1             1<br />
*quantity คือ จำนวนของฐานของมูลขอลแต่ละ item name ได้มาจากการ count<br />
  capacity คือ จำนวนความจุ ที่ตั้งใจจะนำไปแบ่งแต่ละcell<br />
  slot use = ceil(capacity/quantity)</p>
<p>โดยจะนำข้อมูลทั้งหมดไปใส่ในตารางที่ผ่านการ loop<br />
สิ่งที่ตั้งใจทำก็คือ จะแบ่งช่องของสิ่งของเหล่านี้ โดยให้ค่า quantity ไม่เกิน capacity ในแต่ละช่อง<br />
ถ้าสำเร็จผลที่ได้รับคือ</p>
<p>ข้าวโพด2 ขี้ไก่9 ปลาฯ5 ปลาฯ1 ปลาฉลาม1 ปลาฉลาม1 เกลือ1<br />
</code><br />
พอดีว่าผมขี้เกียจสร้าง database เพื่อแก้ปัญหาเลยขอประยุกต์ด้วย Array สำหรับใครที่ต้องการจะเอาไปใช้กับ database อื่นๆก็ดัดแปลงดูแล้วกันครับ</p>
<pre name=code class=php>
< ?
$data[0] = array('itemlist_id'=>5,'item_name'=>'ข้าวโพด','quantity'=>2,'capacity'=>15,'user_id'=>1,'slot_use'=>1) ;
$data[1] = array('itemlist_id'=>32,'item_name'=>'ขี้ไก่','quantity'=>9,'capacity'=>50,'user_id'=>1,'slot_use'=>1) ;
$data[2] = array('itemlist_id'=>76,'item_name'=>'ปลากระโทงแทง','quantity'=>6,'capacity'=>5,'user_id'=>1,'slot_use'=>2) ;
$data[3] = array('itemlist_id'=>79,'item_name'=>'ปลาฉลาม','quantity'=>2,'capacity'=>1,'user_id'=>1,'slot_use'=>2) ;
$data[4] = array('itemlist_id'=>168,'item_name'=>'เกลือ','quantity'=>1,'capacity'=>50,'user_id'=>1,'slot_use'=>1) ;

if(is_array($data))
{
	// read from data I
    foreach($data as $row)
    {
		while($row['quantity'] > 0)
		{
			$quantity = ($row['quantity'] > $row['capacity'] ? $row['capacity'] : $row['quantity']  )  ;
			$row['quantity'] -=  $quantity ;
			// insert to data II
			$data2[] = array('itemlist_id'=>$row['itemlist_id'],'item_name'=>$row['item_name'],'quantity'=>$quantity,'capacity'=>$row['capacity'],'user_id'=>$row['user_id'],'slot_use'=>1) ;
			echo  'itemlist_id=>',$row['itemlist_id'],', item_name=>',$row['item_name'],', quantity=>',$quantity,', capacity=>',$row['capacity'],', user_id=>',$row['user_id'],', slot_use=>',1 , "";
		}
    }
}

?>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.phplifestyle.com/79/%e0%b9%81%e0%b8%81%e0%b9%89%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%a2%e0%b9%89%e0%b8%b2%e0%b8%a2%e0%b8%aa%e0%b8%b4%e0%b9%88%e0%b8%87%e0%b8%82%e0%b8%ad%e0%b8%87/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ต่างเส้นทางปลายทางเดียวกัน</title>
		<link>http://www.phplifestyle.com/72/%e0%b8%95%e0%b9%88%e0%b8%b2%e0%b8%87%e0%b9%80%e0%b8%aa%e0%b9%89%e0%b8%99%e0%b8%97%e0%b8%b2%e0%b8%87%e0%b8%9b%e0%b8%a5%e0%b8%b2%e0%b8%a2%e0%b8%97%e0%b8%b2%e0%b8%87%e0%b9%80%e0%b8%94%e0%b8%b5%e0%b8%a2/</link>
		<comments>http://www.phplifestyle.com/72/%e0%b8%95%e0%b9%88%e0%b8%b2%e0%b8%87%e0%b9%80%e0%b8%aa%e0%b9%89%e0%b8%99%e0%b8%97%e0%b8%b2%e0%b8%87%e0%b8%9b%e0%b8%a5%e0%b8%b2%e0%b8%a2%e0%b8%97%e0%b8%b2%e0%b8%87%e0%b9%80%e0%b8%94%e0%b8%b5%e0%b8%a2/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 17:11:37 +0000</pubDate>
		<dc:creator>tumaji</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[if]]></category>
		<category><![CDATA[switch]]></category>
		<category><![CDATA[without if and switch]]></category>

		<guid isPermaLink="false">http://www.phplifestyle.com/?p=72</guid>
		<description><![CDATA[ขึ้นชื่อเรื่องยังกับละครหลังข่าวอ่านจะทำให้หลายคนเข้าใจไปว่าเข้าเว็บผิด ช้าก่อนยังไม่ผิดที่ตังชื่อแบบนี้เพราะมันมีที่มาและก็เกี่ยวกับ PHP ด้วย
จากเมื่อวันที่ 29-31 ต.ค. 2551 ผมได้ไปเป็นวิทยากรอบรม Basic PHP ให้กับหน่วยงานแห่งหนึ่งและในวันแรกของการอบรมได้ตังโจทย์ให้ผู้อบรมได้ลองเขียนโปรแกรมง่ายๆโดยมีคำสั่งดังนี้

1. ให้สร้าง Array เก็บชื่อเดือน แล้วทำการแสดงผลด้วย Loop for โดยกำหนดเงื่อนไขให้ เดือนที่ 7 แสดงอักษรสีน้ำเงิน
2. ให้สร้าง Array เก็บชื่อวัน แล้วทำการแสดงผลด้วย Loop foreach โดยกำหนดเงื่อนให้แสดงสีตัวอักษรตามวัน เช่น วันจันทร์แสดงตัวอักษรสีเหลือง

ซึ่งจริงๆแล้วมันก็ไม่น่าจะมีปัญหาอะไรข้อแรกก็จะเขียนออกมาได้ประมาณนี้

&#60; ?
$month =array('มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน','กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม') ;

for($i=0,$max=count($month);$i&#60;$max ;$i++)
{
     if($i == 6)
    {
        echo '&#60;font color=blue&#62;',$month[$i] [...]]]></description>
			<content:encoded><![CDATA[<p>ขึ้นชื่อเรื่องยังกับละครหลังข่าวอ่านจะทำให้หลายคนเข้าใจไปว่าเข้าเว็บผิด ช้าก่อนยังไม่ผิดที่ตังชื่อแบบนี้เพราะมันมีที่มาและก็เกี่ยวกับ PHP ด้วย<br />
จากเมื่อวันที่ 29-31 ต.ค. 2551 ผมได้ไปเป็นวิทยากรอบรม Basic PHP ให้กับหน่วยงานแห่งหนึ่งและในวันแรกของการอบรมได้ตังโจทย์ให้ผู้อบรมได้ลองเขียนโปรแกรมง่ายๆโดยมีคำสั่งดังนี้<br />
<code><br />
1. ให้สร้าง Array เก็บชื่อเดือน แล้วทำการแสดงผลด้วย Loop for โดยกำหนดเงื่อนไขให้ เดือนที่ 7 แสดงอักษรสีน้ำเงิน<br />
2. ให้สร้าง Array เก็บชื่อวัน แล้วทำการแสดงผลด้วย Loop foreach โดยกำหนดเงื่อนให้แสดงสีตัวอักษรตามวัน เช่น วันจันทร์แสดงตัวอักษรสีเหลือง<br />
</code><br />
ซึ่งจริงๆแล้วมันก็ไม่น่าจะมีปัญหาอะไรข้อแรกก็จะเขียนออกมาได้ประมาณนี้</p>
<pre name=code class=php>
&lt; ?
$month =array('มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน','กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม') ;

for($i=0,$max=count($month);$i&lt;$max ;$i++)
{
     if($i == 6)
    {
        echo '&lt;font color=blue&gt;',$month[$i] , '&lt;br /&gt;' ;
    }
    else
    {
        echo $month[$i] , "&lt;br&gt;" ;
    }
}
?&gt;
</pre>
<p>และข้อ 2 ก็จะได้แบบนี้</p>
<pre name=code class=php>
&lt; ?
$day = array('วันอาทิตย์','วันจันทร์','วันอังคาร','วันพุธ','วันพฤหัสบดี','วันศุกร์','วันเสาร์') ;
foreach($day as $index =&gt; $value)
{
	switch($index)
	{
		case 0 :
			$color = 'red' ;
		break ;
		case 1 :
			$color = 'yellow' ;
		break ;
		case 2 :
			$color = '#FFCCFF' ;
		break ;
		case 3 :
			$color = '#7FFF7F' ;
		break ;
		case 4 :
			$color = '#FF9900' ;
		break ;
		case 5 :
			$color = '#3333FF' ;
		break ;
		default :
			$color = '#993399' ;
		break ;
	}
	echo '&lt;font color=',$color,'&gt;',$value,'&lt;/font&gt;&lt;br&gt;' ;
}
</pre>
<p><strong>แต่ปัญหามันเกิดเพราะผมดันลืมสอนเรื่อง if และ switch </strong>เอาหล่ะสิแบบนี้จะทำยังไงถ้าเราไม่มี if กับ switch ใช้<br />
แนวทางการแก้ปัญหาในข้อแรกง่ายๆก็ใส่สีใน Array เลยก็สิ้นเรื่อง แบบนี้ง่ายและทำงานได้เร็วกว่าเพราะไม่ต้องมาเช็คเงื่อนไข โดยจะสามารถเขียน code ได้แบบนี้</p>
<pre name=code class=php>
&lt; ?
$month =array('มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน','&lt;font color=blue&gt;กรกฎาคม&lt;/font&gt;','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม') ;

for($i=0,$max=count($month);$i&lt; $max ;$i++)
{
      echo $month[$i]  ;
}
?&gt;
</pre>
<p>เป็นไงหล่ะทำงานได้เหมือนกันตรงตามคำสั่งด้วย แล้วถ้าเป็นข้อ 2 หล่ะจะทำเหมือนกันมั้ย! ไม่แน่นอนเพราะมันจะดูขี้เหล่ไปผมใช้วิธีสร้าง Array อีกตัวในการเก็บสีของวันและจัดให้มันมี Index ตรงกับ Index ของวันเท่านี้เราก็สามารถแสดงสีตามวันได้โดยไม่ต้องใช้ switch และสิ่งที่ตามมาโปรแกรมจะทำงานได้เร็วกว่าการใช้ switch อีกด้วยและยังเขียนสั้นกว่าเยอะ</p>
<pre name=code class=php>
&lt; ?
$day = array('วันอาทิตย์','วันจันทร์','วันอังคาร','วันพุธ','วันพฤหัสบดี','วันศุกร์','วันเสาร์') ;
$daycolor = array('red','yellow','#FFCCFF','#7FFF7F','#FF9900','#3333FF','#993399') ;
foreach($day as $index =&gt; $value)
{
 echo '&lt;font color=',$daycolor[$index],'&gt;',$value,'&lt;/font&gt;&lt;br&gt;' ;
}
?&gt;
</pre>
<p>สิ่งที่จะสื่อให้เห็นในบทความนี้คือ <em>ในการเขียนโปรแกรมเราสามารถเขียนได้หลายวิธีเพื่อให้ได้สิ่งที่ต้องการทำงาน </em>และก็จะขึ้นอยู่กับพื้นฐานของแต่ละคนว่าจะเลือกวิธีการไหน ถ้าคนที่มีประสบการณ์และมีพื้นฐานที่ดีจะเลือกเขียนแบบกระชับดูง่ายและที่สำคัญทำงานได้เร็วแล้วกินทรัพยากรน้อยโดยเฉพาะการเขียน Web Application <strong>ดังนั้นไม่ต้องแปลกใจเลยว่าทำไมสมัยเรียนเวลาส่งงานอาจารย์ถึงโดนจับได้ว่า copy code มาส่ง</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phplifestyle.com/72/%e0%b8%95%e0%b9%88%e0%b8%b2%e0%b8%87%e0%b9%80%e0%b8%aa%e0%b9%89%e0%b8%99%e0%b8%97%e0%b8%b2%e0%b8%87%e0%b8%9b%e0%b8%a5%e0%b8%b2%e0%b8%a2%e0%b8%97%e0%b8%b2%e0%b8%87%e0%b9%80%e0%b8%94%e0%b8%b5%e0%b8%a2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ตัวแปรแบบ dynamic (Dynamic Variables)</title>
		<link>http://www.phplifestyle.com/70/%e0%b8%95%e0%b8%b1%e0%b8%a7%e0%b9%81%e0%b8%9b%e0%b8%a3%e0%b9%81%e0%b8%9a%e0%b8%9a-dynamic-dynamic-variables/</link>
		<comments>http://www.phplifestyle.com/70/%e0%b8%95%e0%b8%b1%e0%b8%a7%e0%b9%81%e0%b8%9b%e0%b8%a3%e0%b9%81%e0%b8%9a%e0%b8%9a-dynamic-dynamic-variables/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 19:13:40 +0000</pubDate>
		<dc:creator>tumaji</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[dynamic]]></category>
		<category><![CDATA[off]]></category>
		<category><![CDATA[register_globals]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[variable]]></category>

		<guid isPermaLink="false">http://www.phplifestyle.com/?p=70</guid>
		<description><![CDATA[����������� เนื่องจากผมได้เจอคำถามจากเพื่อนสมาชิกใน board thaiseoboard.com ตั้งคำถามว่า

// read POST variables if present
foreach ($_POST as $name =&#62; $value) {�
������ $$name = $value;
}

Script บรรทัดนี้หมายความว่ายังไง ก็เลยเป็นเหตุได้เขียนบทความนี้
������������ ที่เป็นคำถามเพราะว่าเจอตัวแปรที่มี $$ นำหน้า ซึ่งปกติทั่วไปจะเป็น $ อันเดียว ลักษณะที่เป็น $$ �เป็นการสร้างตัวแปรแบบ dynamic �เช่น

$name = 'test' ;
$$name จะหมายถึง $test
การรับค่า $$name = 1 ;
ก็แสดงว่า $test มีค่าเท่ากับ 1

อันนี้น่าจะพอเข้าใจกันแล้ว ทีนี้มาดูจุดมุ่งหมายของ Script นี้

// read POST variables if present
foreach ($_POST as $name [...]]]></description>
			<content:encoded><![CDATA[<p>����������� เนื่องจากผมได้เจอคำถามจากเพื่อนสมาชิกใน board thaiseoboard.com ตั้งคำถามว่า</p>
<pre name='code' class='php'>
// read POST variables if present
foreach ($_POST as $name =&gt; $value) {�
������ $$name = $value;
}
</pre>
<p>Script บรรทัดนี้หมายความว่ายังไง ก็เลยเป็นเหตุได้เขียนบทความนี้</p>
<p>������������ ที่เป็นคำถามเพราะว่าเจอตัวแปรที่มี $$ นำหน้า ซึ่งปกติทั่วไปจะเป็น $ อันเดียว ลักษณะที่เป็น $$ �เป็นการสร้างตัวแปรแบบ dynamic �เช่น<br />
<code><br />
$name = 'test' ;<br />
$$name จะหมายถึง $test<br />
การรับค่า $$name = 1 ;<br />
ก็แสดงว่า $test มีค่าเท่ากับ 1<br />
</code></p>
<p>อันนี้น่าจะพอเข้าใจกันแล้ว ทีนี้มาดูจุดมุ่งหมายของ Script นี้</p>
<pre name='code' class='php'>
// read POST variables if present
foreach ($_POST as $name =&gt; $value) {� // name เป็น index ของ array
������ $$name = $value; // ส่งค่าให้กับตัวแปร
}
</pre>
<p>�<br />
จาก script เป็นการแก้ปัญหาการ config register_globals = Off ใน php.ini �ซึ่งค่าจาก form จะอยู่ในรูป $_POST['test'] ,$_GET['test'] ไม่สามารถ เอา $test มาใช้ได้เลยทันที แต่ถ้า register_globals = On จะสามารถใช้ $test ได้เลย<br />
ด้วยเหตุนี้ถ้าไม่สามารถแก้ php.ini ได้(กรณีเช่าโฮสอยู่) ก็มาแก้ที่โปรแกรมโดยการวนลูป� $_POST ซึ่งเป็น array แล้วส่งค่าให้กับตัวแปรตามค่า index ของมันซึ่งค่า index ของมันก็คือชื่อตัวแปรนั้นเอง</p>
<p>ตัวอย่างเช่นใน form มีการส่งค่า username=var1 และ password=var2 มา� ในการรับค่าจาก form จะได้เป็น $_POST[username'] และ $_POST[password'] �โดยในรูปแบบ array จะเป็น (username&#8217;=&gt;var1 ,&#8217;password&#8217;=&gt;var2)</p>
<p>ปล. register_globals = Off� แนะนำให้ใช้เพราะเหตุผลทางด้าน security ครับ อีกตัว magic_quotes_gpc = On ป้องกัน Sql injection ครับ</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phplifestyle.com/70/%e0%b8%95%e0%b8%b1%e0%b8%a7%e0%b9%81%e0%b8%9b%e0%b8%a3%e0%b9%81%e0%b8%9a%e0%b8%9a-dynamic-dynamic-variables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 5 กับปัญหาการแสดงเวลา</title>
		<link>http://www.phplifestyle.com/63/php-5-%e0%b8%81%e0%b8%b1%e0%b8%9a%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%81%e0%b8%aa%e0%b8%94%e0%b8%87%e0%b9%80%e0%b8%a7%e0%b8%a5%e0%b8%b2/</link>
		<comments>http://www.phplifestyle.com/63/php-5-%e0%b8%81%e0%b8%b1%e0%b8%9a%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%81%e0%b8%aa%e0%b8%94%e0%b8%87%e0%b9%80%e0%b8%a7%e0%b8%a5%e0%b8%b2/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 17:46:05 +0000</pubDate>
		<dc:creator>tumaji</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[date time]]></category>
		<category><![CDATA[date time function php5]]></category>
		<category><![CDATA[date_default_timezone_set]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[time zone]]></category>

		<guid isPermaLink="false">http://www.phplifestyle.com/?p=63</guid>
		<description><![CDATA[����������� ผมเขียน PHP มาหลายปีพึ่งมามีปัญหากับ function date ที่แสดงเวลาไม่ตรงเพราะพึ่งจะหันมาเขียนบน PHP5 (ลง Appserv ตัวใหม่ ) หลังจากที่กำลังเขียนโปรแกรมเกี่ยวกับเวลาสังเกตว่าเวลามันเร็วไป 1 ชม.
����������� เอาหล่ะสิเขียน PHP มาตั้งนานพึ่งจะเจอปัญหาก็เพราะว่าใน PHP 5 มีการ config เกี่ยวกับ timezone เอาไว้ ลองดูที่ php.ini จะพบ
�
[Date]; Defines the default timezone used by the date functions
;date.timezone =

�ตามตัวอย่างถ้าไม่ได้แก้อะไรเวลาจะบวกไปอีก 1 ชม. แล้วถ้าต้องการแก้ให้ถูกต้องหล่ะไม่ยากครับ

[Date]; Defines the default timezone used by the date functions
date.timezone = "Asia/Bangkok"

�แก้ตามนี้แล้ว restart webserver ใหม่ก็ใช้งานได้แล้ว [...]]]></description>
			<content:encoded><![CDATA[<p>����������� ผมเขียน PHP มาหลายปีพึ่งมามีปัญหากับ function date ที่แสดงเวลาไม่ตรงเพราะพึ่งจะหันมาเขียนบน PHP5 (ลง Appserv ตัวใหม่ ) หลังจากที่กำลังเขียนโปรแกรมเกี่ยวกับเวลาสังเกตว่าเวลามันเร็วไป 1 ชม.</p>
<p>����������� เอาหล่ะสิเขียน PHP มาตั้งนานพึ่งจะเจอปัญหาก็เพราะว่าใน PHP 5 มีการ config เกี่ยวกับ timezone เอาไว้ ลองดูที่ php.ini จะพบ</p>
<p>�<code><br />
[Date]; Defines the default timezone used by the date functions<br />
;date.timezone =<br />
</code></p>
<p>�ตามตัวอย่างถ้าไม่ได้แก้อะไรเวลาจะบวกไปอีก 1 ชม. แล้วถ้าต้องการแก้ให้ถูกต้องหล่ะไม่ยากครับ</p>
<p><code><br />
[Date]; Defines the default timezone used by the date functions<br />
date.timezone = "Asia/Bangkok"<br />
</code></p>
<p>�แก้ตามนี้แล้ว restart webserver ใหม่ก็ใช้งานได้แล้ว ทดสอบตาม code นี้</p>
<pre name="code" class="php">
< ?
echo date('l jS \of F Y h:i:s A');
?>
</pre>
<p>�ผลที่ได้ประมาณนี้<br />
<code>Friday 26th of September 2008 12:32:25 AM</code></p>
<p>�ส่วนสำหรับใครที่ไม่สามารถแก้ php.ini โดยเฉพาะที่เช่า host เค้าอยู่ก็ลองใช้�</p>
<pre name="code" class="php">

< ?
//�set�the�default�timezone�to�use.�Available�since�PHP�5.1

date_default_timezone_set('Asia/Bangkok');

echo date('l jS \of F Y h:i:s A');
?>
</pre>
<p>เท่านี้ก็จะสามารถใช้ Function ที่เกี่ยวกับเวลาได้อย่างไม่มีปัญหาแล้วครับ</p>
<p>ปล. date_default_timezone_set มีใน PHP 5.1 [1] ขึ้นไปครับ</p>
<p>�อ้างอิง</p>
<p>[1] http://th2.php.net/manual/en/function.date-default-timezone-set.php</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phplifestyle.com/63/php-5-%e0%b8%81%e0%b8%b1%e0%b8%9a%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%81%e0%b8%aa%e0%b8%94%e0%b8%87%e0%b9%80%e0%b8%a7%e0%b8%a5%e0%b8%b2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Chrome กับ Rich Text Editor มันมีปัญหา !</title>
		<link>http://www.phplifestyle.com/45/google-chrome-%e0%b8%81%e0%b8%b1%e0%b8%9a-rich-text-editor-%e0%b8%a1%e0%b8%b1%e0%b8%99%e0%b8%a1%e0%b8%b5%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2/</link>
		<comments>http://www.phplifestyle.com/45/google-chrome-%e0%b8%81%e0%b8%b1%e0%b8%9a-rich-text-editor-%e0%b8%a1%e0%b8%b1%e0%b8%99%e0%b8%a1%e0%b8%b5%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2/#comments</comments>
		<pubDate>Thu, 11 Sep 2008 19:10:50 +0000</pubDate>
		<dc:creator>tumaji</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[google chrome]]></category>
		<category><![CDATA[php user agent detect]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[rich text editor]]></category>

		<guid isPermaLink="false">http://www.phplifestyle.com/?p=45</guid>
		<description><![CDATA[����������� หลังจากเป็นที่ฮือหากับการเปิดตัวของ browser เจ้าใหม่แต่ชื่อไม่ใหม่อย่าง Google Chrome ของค่ายยักษ์ใหญ่อย่าง Google ที่ทำอะไรก็รุ่งไปหมด ทำให้ตลาดของ browser ตื่นตัวขึ้นอีกครั้งซึ่งเรื่องนั้นเราไม่พูดถึงเราจะมาพูดถึงเรื่องที่เราถนัดดีกว่านั้นก็คือเรื่องของการเขียนโปรแกรม
����������� การเปิดตัวของ Google Chrome ทำให้วงการ Software ต้องมีการปรับปรุงไม่มากก็น้อยซึ่งที่เห็นได้ชัดก็คือการปรับให้ Software สามารถรันบน Google Chrome ได้ ซึ่งปัญหาที่เห็นได้ชัดที่สุดก็คือบรรดา Rich Text Editor ทั้งหลายต่างเอ๋อไปตามๆกันเมื่อรันผ่าน Google Chrome เพราะไม่รู้จักว่ามันเป็นใครก็ที่ไม่รู้จักก็เพราะว่าตัว USER_AGENT ของ Google Chrome ทะลึ่งมีหน้าตาแปลกๆ�
�Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13
 
�แล้วอย่างนี้ที่เขียนกันเอาไว้ก็ไม่รู้ว่าจะเข้าเงื่อนไขไหนเพราะมันมีทั้ง Mozilla , Gecko , Chrome , Safari [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-205" title="agent" src="http://www.phplifestyle.com/wp-content/uploads/2008/09/agent.jpg" alt="agent" width="782" height="73" />����������� หลังจากเป็นที่ฮือหากับการเปิดตัวของ browser เจ้าใหม่แต่ชื่อไม่ใหม่อย่าง Google Chrome ของค่ายยักษ์ใหญ่อย่าง Google ที่ทำอะไรก็รุ่งไปหมด ทำให้ตลาดของ browser ตื่นตัวขึ้นอีกครั้งซึ่งเรื่องนั้นเราไม่พูดถึงเราจะมาพูดถึงเรื่องที่เราถนัดดีกว่านั้นก็คือเรื่องของการเขียนโปรแกรม</p>
<p>����������� การเปิดตัวของ Google Chrome ทำให้วงการ Software ต้องมีการปรับปรุงไม่มากก็น้อยซึ่งที่เห็นได้ชัดก็คือการปรับให้ Software สามารถรันบน Google Chrome ได้ ซึ่งปัญหาที่เห็นได้ชัดที่สุดก็คือบรรดา Rich Text Editor ทั้งหลายต่างเอ๋อไปตามๆกันเมื่อรันผ่าน Google Chrome เพราะไม่รู้จักว่ามันเป็นใครก็ที่ไม่รู้จักก็เพราะว่าตัว USER_AGENT ของ Google Chrome ทะลึ่งมีหน้าตาแปลกๆ�</p>
<p>�<code>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13</code></p>
<p> </p>
<p>�แล้วอย่างนี้ที่เขียนกันเอาไว้ก็ไม่รู้ว่าจะเข้าเงื่อนไขไหนเพราะมันมีทั้ง Mozilla , Gecko , Chrome , Safari งงเลย</p>
<p>����������� ล่าสุดในวันที่ผมนั่งเขียน (12 กย. 51) Rich Text Editor เจ้าใหญ่ๆพากันปรับให้สามารถใช้งานบน Google Chrome แล้วอย่าง Spaw, TinyMCE ( Open Source หลายตัวใช้อยู่เช่น Moodle, Wordpress) จริงๆแล้ว Rich Text Editor เหล่านี้จะใช้ JavaScript ในการ detect browser ซึ่งถ้าอธิบายก็คงต้องไปนั่งไล่ JavaScript อีกยาว เอาเป็นว่าเอาตัวอย่างที่เป็น PHP ไปลองเล่นกันก็แล้วกัน</p>
<pre class="php">function userAgent($minor=false){
	$agents = array('MSIE'=&gt;'/MSIE ([0-9]\.[0-9])/', 'Firefox'=&gt;'/Firefox\/([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*)/', 'Opera'=&gt;'/Opera\/([0-9]*\.[0-9])/','Safari'=&gt;'/Version\/([0-9]*\.[0-9]*\.?[0-9]*)/','Chrome'=&gt;'/Chrome\/([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*)/');
	foreach($agents as $agent=&gt;$pattern){
		preg_match($pattern,$_SERVER['HTTP_USER_AGENT'],$match);
		if(isset($match[1])){
			if($minor){
				return $agent.' '.$match[1];
			}
			else
			{
				return $agent.' '.floor($match[1]);
			}
		}
	}
	return 'Unknown browser';
}
echo userAgent(true) ;</pre>
<p>ทดสอบ: <a title="demo useragent" href="http://www.phplifestyle.com/demo/browser.php" target="_blank">demo</a></p>
<p>�</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-204" title="chrome" src="http://www.phplifestyle.com/wp-content/uploads/2008/09/chrome.jpg" alt="chrome" width="339" height="242" /><a href="http://phplifestyle.com/wp-content/uploads/2008/09/chrome.jpg"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phplifestyle.com/45/google-chrome-%e0%b8%81%e0%b8%b1%e0%b8%9a-rich-text-editor-%e0%b8%a1%e0%b8%b1%e0%b8%99%e0%b8%a1%e0%b8%b5%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unable to find socket transport ssl while using PHPMailer</title>
		<link>http://www.phplifestyle.com/32/unable-to-find-socket-transport-ssl-while-using-phpmailer/</link>
		<comments>http://www.phplifestyle.com/32/unable-to-find-socket-transport-ssl-while-using-phpmailer/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 06:46:05 +0000</pubDate>
		<dc:creator>tumaji</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[openssl]]></category>
		<category><![CDATA[phpmailer]]></category>
		<category><![CDATA[smtp error]]></category>

		<guid isPermaLink="false">http://www.phplifestyle.com/?p=32</guid>
		<description><![CDATA[Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:465 (Unable to find the socket transport &#8220;ssl&#8221; &#8211; did you forget to enable it when you configured PHP?) in C:\phpmailer\class.smtp.php on line 124
Mailer Error: SMTP Error: Could not connect to SMTP host.
หากเจอปัญหาแบบนี้วิธีแก้ก็ไปที่ php.ini
แก้  ;extension=php_openssl.dll
เป็น extension=php_openssl.dll
จากนั้น restart webserver ก็ใช้งานได้แล้ว
]]></description>
			<content:encoded><![CDATA[<p><em>Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:465 (Unable to find the socket transport &#8220;ssl&#8221; &#8211; did you forget to enable it when you configured PHP?) in C:\phpmailer\class.smtp.php on line 124<br />
Mailer Error: SMTP Error: Could not connect to SMTP host.</em></p>
<p>หากเจอปัญหาแบบนี้วิธีแก้ก็ไปที่ php.ini<br />
แก้  ;extension=php_openssl.dll<br />
เป็น extension=php_openssl.dll<br />
จากนั้น restart webserver ก็ใช้งานได้แล้ว</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phplifestyle.com/32/unable-to-find-socket-transport-ssl-while-using-phpmailer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
