<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
 "http://my.netscape.com/publish/formats/rss-0.91.dtd">

<rss version="0.91">

<channel>
<title>สอน PHP สอนเขียนเว็บ เนื้อหา เขียนโปรแกรม Code Script webboard forum เว็บสำเร็จรูป</title>
<link>http://www.mindphp.com</link>
<description>MINDPHP  Powered Site</description>
<language>en-us</language>

<item>
<title>Authentication ป้องกันไฟล์ด้วย php</title>
<link>http://www.mindphp.com/modules.php?name=News&amp;file=article&amp;sid=90</link>
<description><div><table width="100%" cellspacing="0" cellpadding="3" border="0" align="center"><tr><td width="100%" valign="top" height="50%">How to protect a document with PHP's authentication.<br />มาทำวิธีป้องกันการเข้าดูไฟล์ด้วย php กันดีกว่า<br />วิธีง่ายๆในการป้องกันด้วย password ที่หลายคนยังไม่เคยลอง </td></tr><tr><td width="100%" valign="top" height="50%">หลายคนคงจะเคยเห็นเวลาเข้าเวบส่วนที่มี password <br />บางเวบจะเป็น Box แสดงขึ้นมาให้ใส่ username &amp;password<br />คราวนี้เราจะมาทำเองกัน ง่ายๆครับ ลองดูโค๊ดข้างล่าง สามารถ copy ไปใช้ได้เลย<br />ต้องการให้ไฟล์ไหน มีการป้องกันก็ copy เอาไปใส่ในต้นไฟล์นั้น จะเป็นการเช็ค Username &amp; Password ที่สามารถใช้งานได้หลายรูปแบบ <br /><br /><!--P<br--><br /><em>// include this file where you want to limit access.</em> <br /><br />$username =  <strong>&quot;test&quot;</strong>;<br />$password =  <strong>&quot;123&quot;</strong>;<br /><br />function authenticate() {<br />  Header( <strong>&quot;WWW-authenticate: basic realm='Protected'&quot;</strong>);<br />  Header( <strong>&quot;HTTP/1.0 401 Unauthorized&quot;</strong>);<br />  echo   <strong>&quot;You must enter a valid login ID and password! &quot;</strong>;<br />  exit;<br />}<br /><br />function CheckPwd($user,$pass) {<br />  global $username,$password;<br />  return ($user != $username || $pass != $password) ? false : true;<br />}<br /><br />if(!isset($PHP_AUTH_USER)) {<br />  authenticate();<br />}<br />elseif(!CheckPwd($PHP_AUTH_USER,$PHP_AUTH_PW)) {<br />  authenticate();<br />}<br />?&gt;<br /><br />------ส่วนนี้เป็น html --------<br /><br /><br /><br /><br /><br /><br /><strong>Welcome,</strong><br /><br />You have<br />authenticated successfully!<br /><br /><br /><br /><br />จากข้างบนเราสามารถนำมาประยุกต์ใช้ร่วมกับฐานข้อมูลก็ได้ โดยให้ลิสต์ username &amp; password มาจากฐานข้อมูลแทน อันนี้อยู่ที่แต่ละคนจะดัดแปลงไปใช้เอาเองล่ะกันครับ <br /><br /></td></tr></table></div><br /></description>
</item>

<item>
<title>การเปลี่ยน ตำแหน่ง ปุ่ม New Post ของ tempalte บอร์ด SMF</title>
<link>http://www.mindphp.com/modules.php?name=News&amp;file=article&amp;sid=89</link>
<description><h1>การเปลี่ยน ตำแหน่ง ปุ่ม New Post ของ tempalte บอร์ด SMF</h1>เปิด ไฟล์ <br />MessageIndex.template.php <br /><br />function theme_show_buttons()<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp; global $context, $settings, $options, $txt, $scripturl;<br /><br /><br /><br />&nbsp;&nbsp;&nbsp; $buttonArray = array();<br /><br /><br /><br />&nbsp;&nbsp;&nbsp; // If they are logged in, and the mark read buttons are enabled..<br /><br />&nbsp;&nbsp;&nbsp; if ($context['user']['is_logged'] &amp;&amp; $settings['show_mark_read'])<br /><br />&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; $buttonArray[] = '&lt;a href=&quot;' . $scripturl .
'?action=markasread;sa=board;board=' . $context['current_board'] .
'.0;sesc=' . $context['session_id'] . '&quot;&gt;' .
($settings['use_image_buttons'] ? '&lt;img src=&quot;' .
$settings['images_url'] . '/' . $context['user']['language'] .
'/markread.gif&quot; alt=&quot;' . $txt[300] . '&quot; border=&quot;0&quot; /&gt;' : $txt[300])
. '&lt;/a&gt;';<br /><br /><br /><br />&nbsp;&nbsp;&nbsp; // If the user has permission to show the notification button... ask them if they're sure, though.<br /><br />&nbsp;&nbsp;&nbsp; if ($context['can_mark_notify'])<br /><br />&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; $buttonArray[] = '&lt;a href=&quot;' . $scripturl .
'?action=notifyboard;sa=' . ($context['is_marked_notify'] ? 'off' :
'on') . ';board=' . $context['current_board'] . '.' . $context['start']
. ';sesc=' . $context['session_id'] . '&quot; onclick=&quot;return confirm('' .
($context['is_marked_notify'] ? $txt['notification_disable_board'] :
$txt['notification_enable_board']) . '');&quot;&gt;' .
($settings['use_image_buttons'] ? '&lt;img src=&quot;' .
$settings['images_url'] . '/' . $context['user']['language'] .
'/notify.gif&quot; alt=&quot;' . $txt[131] . '&quot; border=&quot;0&quot; /&gt;' : $txt[131]) .
'&lt;/a&gt;';<br /><br /><br /><br />&nbsp;&nbsp;&nbsp; // Are they allowed to post new topics?<br /><br />&nbsp;&nbsp;&nbsp; if ($context['can_post_new'])<br /><br />&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; $buttonArray[] = '&lt;a href=&quot;' . $scripturl .
'?action=post;board=' . $context['current_board'] . '.0&quot;&gt;' .
($settings['use_image_buttons'] ? '&lt;img src=&quot;' .
$settings['images_url'] . '/' . $context['user']['language'] .
'/new_topic.gif&quot; alt=&quot;' . $txt[33] . '&quot; border=&quot;0&quot; /&gt;' : $txt[33]) .
'&lt;/a&gt;';<br /><br /><br /><br />&nbsp;&nbsp;&nbsp; // How about new polls, can the user post those?<br /><br />&nbsp;&nbsp;&nbsp; if ($context['can_post_poll'])<br /><br />&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; $buttonArray[] = '&lt;a href=&quot;' . $scripturl .
'?action=post;board=' . $context['current_board'] . '.0;poll&quot;&gt;' .
($settings['use_image_buttons'] ? '&lt;img src=&quot;' .
$settings['images_url'] . '/' . $context['user']['language'] .
'/new_poll.gif&quot; alt=&quot;' . $txt['smf20'] . '&quot; border=&quot;0&quot; /&gt;' :
$txt['smf20']) . '&lt;/a&gt;';<br /><br /><br /><br />&nbsp;&nbsp;&nbsp; return implode($context['menu_separator'], $buttonArray);<br /><br />}<br /><br />แก้ เป็น <br /><br />function theme_show_buttons()<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp; global $context, $settings, $options, $txt, $scripturl;<br /><br /><br /><br />&nbsp;&nbsp;&nbsp; $buttonArray = array();<br /><br /><br />&nbsp;&nbsp;&nbsp; // Are they allowed to post new topics?<br />&nbsp;&nbsp;&nbsp; if ($context['can_post_new'])<br />&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; $buttonArray[] = '&lt;a href=&quot;' . $scripturl .
'?action=post;board=' . $context['current_board'] . '.0&quot;&gt;' .
($settings['use_image_buttons'] ? '&lt;img src=&quot;' .
$settings['images_url'] . '/' . $context['user']['language'] .
'/new_topic.gif&quot; alt=&quot;' . $txt[33] . '&quot; border=&quot;0&quot; /&gt;' : $txt[33]) .
'&lt;/a&gt;';<br /><br /><br /><br /><br />&nbsp;&nbsp;&nbsp; // If they are logged in, and the mark read buttons are enabled..<br /><br />&nbsp;&nbsp;&nbsp; if ($context['user']['is_logged'] &amp;&amp; $settings['show_mark_read'])<br /><br />&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; $buttonArray[] = '&lt;a href=&quot;' . $scripturl .
'?action=markasread;sa=board;board=' . $context['current_board'] .
'.0;sesc=' . $context['session_id'] . '&quot;&gt;' .
($settings['use_image_buttons'] ? '&lt;img src=&quot;' .
$settings['images_url'] . '/' . $context['user']['language'] .
'/markread.gif&quot; alt=&quot;' . $txt[300] . '&quot; border=&quot;0&quot; /&gt;' : $txt[300])
. '&lt;/a&gt;';<br /><br /><br /><br />&nbsp;&nbsp;&nbsp; // If the user has permission to show the notification button... ask them if they're sure, though.<br /><br />&nbsp;&nbsp;&nbsp; if ($context['can_mark_notify'])<br /><br />&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; $buttonArray[] = '&lt;a href=&quot;' . $scripturl .
'?action=notifyboard;sa=' . ($context['is_marked_notify'] ? 'off' :
'on') . ';board=' . $context['current_board'] . '.' . $context['start']
. ';sesc=' . $context['session_id'] . '&quot; onclick=&quot;return confirm('' .
($context['is_marked_notify'] ? $txt['notification_disable_board'] :
$txt['notification_enable_board']) . '');&quot;&gt;' .
($settings['use_image_buttons'] ? '&lt;img src=&quot;' .
$settings['images_url'] . '/' . $context['user']['language'] .
'/notify.gif&quot; alt=&quot;' . $txt[131] . '&quot; border=&quot;0&quot; /&gt;' : $txt[131]) .
'&lt;/a&gt;';<br /><br /><br /><br />&nbsp;&nbsp;&nbsp; // How about new polls, can the user post those?<br /><br />&nbsp;&nbsp;&nbsp; if ($context['can_post_poll'])<br /><br />&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; $buttonArray[] = '&lt;a href=&quot;' . $scripturl .
'?action=post;board=' . $context['current_board'] . '.0;poll&quot;&gt;' .
($settings['use_image_buttons'] ? '&lt;img src=&quot;' .
$settings['images_url'] . '/' . $context['user']['language'] .
'/new_poll.gif&quot; alt=&quot;' . $txt['smf20'] . '&quot; border=&quot;0&quot; /&gt;' :
$txt['smf20']) . '&lt;/a&gt;';<br /><br /><br /><br />&nbsp;&nbsp;&nbsp; return implode($context['menu_separator'], $buttonArray);<br /><br />}<br /><br />เท่านี้เราก็ จะได้ ปุ่ม <br /><img width="134" height="30" border="0" title="ปุ่ม New Post New Post " alt="ปุ่ม New Post " src="http://myspace-hi5-code.kimjiawedding.com/hi5/Themes/insidebb-v1/images/english/new_topic.gif" /><br />ของบอร์ด SMF มาอยู่ ด้านหน้าของ ทุกปุ่มเพื่อ สะดวกในการใช้งาน ผู้ สมาชิกบอร์ด <br />ตัวอย่างเว็บที่ใช้ themes และ แก้ไข ข้อมูลเป็น แบบนั้นแล้ว <br /><a title="บอร์ด SMF" target="_blank" href="http://myspace-hi5-code.kimjiawedding.com/hi5/index.php?board=3.0">http://myspace-hi5-code.kimjiawedding.com/hi5/index.php?board=3.0</a><br /><br /></description>
</item>

<item>
<title>โปรแกรมตัดเพลง โปรแกรมแปลงไฟล์ รวมโปรแกรมแปลงไฟล์</title>
<link>http://www.mindphp.com/modules.php?name=News&amp;file=article&amp;sid=88</link>
<description><h1>โปรแกรมตัดเพลง โปรแกรมแปลงไฟล์</h1><font face="MS Sans Serif"><strong><font color="#0033cc">VIDEOzilla (โปรแกรมแปลงไฟล์ ตระกูลพวกวิดิโอ) <br />SUPER&copy; Universal Encoder<br /><br />รวมโปรแกรมแปลงไฟล์<br /><br /></font></strong></font><br /><table width="100%" cellspacing="0" cellpadding="0" border="0" class="border_c"><tr /><tr><td valign="top" align="left"><span class="postbody"><a href="../../../../undefined/http://www.mindphp.com" target="_blank">Apex Video Converter Super</a> (15.1 Mb) <br /><br />ิ convert your favorite movies from AVI, MOV, QuickTime, MPEG,
WMV, ASF, RM, RMVB, 3GP, MP4 เป็น AVI, MPEG, VCD, DVD, MOV, RM, RMVB,
WMV, ASF, iPod, PSP, 3GP, Xbox, PPC, PMP formats. <br /><br />
<br /><br />
<a href="" target="_blank">ImTOO Audio Maker 3.0.37.0525</a> (5.50 Mb) <br /><br /> convert among most popular audio formats such as CD to MP3,
M4A, WAV, WMA, MP2, OGG, AAC, AC3, and convert video files as MPEG,
MPG, DAT, VOB, WMV, ASF, AVI, MOV, QT, MP4, 3GP, RM to audio files. <br /><br />
<br /><br /> 
<a href="" target="_blank">McFunsoft VideoConvert/Split/Merge Studio 6.8.1</a> (17 Mb) <br /><br />convert, split and merge different video formats such as AVI,
MPEG, MPEG1, MPEG2, MPEG4, VCD, DVD, SVCD, RMVB, RM, WMV, mov, divx and
etc. <br /><br />
<br /><br /> 
<a href="" target="_blank">WinAVI iPod/PSP/3GP/MP4 Video Converter</a> (3.41 Mb) <br /><br /> convert almost all video formats, for e.g., DivX, XviD, MOV,
rm, rmvb, MPEG, VOB, DVD, WMV, AVI to iPod/PSP or other portable video
device, MP4 player or smart phone. <br /><br />
<br /><br /> 
<a href="" target="_blank">Speed Video Converter 3.0.36.5</a> (2.59 Mb) <br /><br /> supports many formats, like MPEG-4, AVI (Divx, xDiv), mpeg
(dvd, vcd, svcd compatible), asf, vob, wmv, DAT, Quick Time. <br /><br />
<br /><br /> 
<a href="" target="_blank">MyVideoConvert V1.11</a> (10.8 Mb) <br /><br /> 
convert video files among VCD SVCD DVD MPEG AVI DivX ASF DAT SWF 3GP RM MP3 MOV etc <br /><br />
<br /><br /> 
<a href="" target="_blank">Xilisoft Video Converter 3.1.26.0330b</a> <br /><br /><br /> 
<a href="" target="_blank">Magic Video Converter 8.0.1.18</a> (17.38 Mb) <br /><br />convert and split any most used video formats, such as AVI, MPEG, MPEG 1, MPEG 2, MPEG 4, VCD, DVD, <br /><br />
SVCD, RMVB, RM, and WMV <br /><br />
<br /><br /> 
<a href="" target="_blank">Power Video Converter 1.5.38</a> <br /><br />   convert between AVI, MPEG, WMV, VCD, SVCD, DVD, VOB, DAT <br /><br />
<br /><br /> 
<a href="" target="_blank">WinAVI Video Converter 8.0 Final</a> <br /><br />ิ supports almost all video file formats, including AVI,
MPEG1/2/4, VCD/SVCD/DVD, DivX, XVid, ASF, WMV, RM, QuickTime MOV, Flash
SWF. WinAVI Video Converter has the fastest video/audio decode/encode
engine in the world, convert any media to DVD in 90 minutes with
stunning video and audio quality.]</span></td></tr></table><br /><font face="MS Sans Serif"><strong><font color="#0033cc"><br /></font></strong></font><br /></description>
</item>

<item>
<title>การทำ Replicate MySQL</title>
<link>http://www.mindphp.com/modules.php?name=News&amp;file=article&amp;sid=87</link>
<description><div class="storycontent"><div><strong>การทำ Replicate MySQL <br />MySQL</strong> เป็นฐานข้อมูลที่ได้รับความนิยมอย่างมากในปัจจุบัน อาจทำงานได้ดี มีเสถียรภาพ มีขนาดเล็ก ติดตั้งง่าย หาเอกสารอ้างอิงง่าย อีกทั้งยังถูกจับคู่กับ PHP ชนิดที่เรียกกันว่า ซี้ปึ๊ก กันเลยทีเดียว หมายถึงคำสั่งต่างๆ ของ PHP จะมีสามารถเรียกใช้ความสามารถของ MySQL ได้อย่างเด็มประสิทธิภาพทีเดียว ยิ่งหากได้ใช้ phpmyadmin อีกยิ่งเข้ากันเป็นปี่เป็นขลุ่ย แถมหาก Run อยู่บน Apache อีก โอ้ว เข้าแก๊ง แต่ยังขาดหัวหน้าแก๊งไปได้ไม่ได้ นั่นคือ Linux โอ อย่างนี้ต้องเรียกว่า มาเป็นทีม อาจเรียกได้ว่าเป็น Dream Team หรือทีมในฝันของนักพัฒนาเว็บแอพพลิเคชั่นเลยทีเดียว ซึ่งทีมนี้มีชื่อเล่น ว่า LAMP (Linux, Apache MySQL, PHP) *ขออภัย นอกเรื่องอีกแล้ว</div><br /><div>MySQL สามารถทำงานได้ทั้งระบบปฏิบัติการ Windows, Linux, Solaris, FreeBSD ทั้งแบบ 32 และ 64 Bit ซึ่งปัจจุบันที่กำลังเขียนอยู่นี้ Version 5.1.20 Beta Replicate MySQL ล่ะคืออะไร เกี่ยวข้องกันอย่างไร &hellip; หลายท่านรู้จักการ Backup ข้อมูล หากท่านรู้จักการทำ Mirror Disk นั่นแหละ ความหมายเดียวกัน &hellip;</div><br /><div>ฐานข้อมูลนั้นมีความสำคัญอย่างยิ่ง เนื่องจากเว็บแอพลิเคชั่นนั้นใช้ฐานข้อมูลเก็บข้อมูลทุกสิ่งทุก ๆ อย่าง ฐานข้อมูลก็ไม่ได้ถูกโหลดเข้า Memory ได้ทั้งหมด ก็ยังคงต้องใช้ Disk ซึ่งเจ้า Disk นี่แหละ ที่ชอบสร้างปัญหาให้กับระบบงานอยู่บ่อยครั้ง หากข้อมูลที่สำคัญ เช่น ข้อมูลด้านการเงิน ข้อมูลการขายหน้าร้าน เกิดเรียกใช้งานไม่ได้ หรือหายไป ย่อมเกิดความเสียหายให้กับหน่วยงาน เป็นอย่างมาก จะดีไหมหากเรามีข้อมูลสำรองไว้ยัง Disk อีกก้อน หรือ Server อีกตัว เพื่อเป็นการลดความเสี่ยงสำหรับการสูญเสียข้อมูล เพราะฉะนั้น เรามาลองทำ Replicate MySQL กัน สิ่งที่ท่านต้องมีการ</div><br /><ol><li>เครื่องคอมพิวเตอร์จำนวน 2 เครื่อง หรือมากกว่า เครื่องแรกเรียกว่า Master เครื่องถัดไปเรียกว่า Slave.</li><li>ทั้ง 2 เครื่องลง Program MySQL โดยที่สามารถ Download ได้ที่ <a href="http://dev.mysql.com/downloads/mysql/5.1.html" title="http://dev.mysql.com/downloads/mysql/5.1.html">http://dev.mysql.com/downloads/mysql/5.1.html</a></li></ol><div align="center">฿าพรวมของการทำ Replicate MySQL</div><br /><div><a href="http://ejeepss.thaipki.com/files/2007/08/replicatemysql3.jpg" title="replicatemysql3.jpg"><img border="0" src="http://ejeepss.thaipki.com/files/2007/08/replicatemysql3.jpg" alt="replicatemysql3.jpg" /></a><br />Pdf:<a href="http://ejeepss.thaipki.com/files/2007/08/replicate-mysql.pdf" title="replicate-mysql.pdf">replicate-mysql.pdf</a></div><br /><div align="center">ภาพที่ 1 ภาพรวมของการทำ Replicate MySQL</div><br /><div><u><strong>ขั้นตอนที่ 1.</strong></u></div><br /><div>หากต้องการ Replicate Master ที่มีข้อมูลอยู่แล้ว จะต้อง Dump ข้อมูลออกมาเพื่อทำให้ Slave มีข้อมูลที่เท่าเทียมกันเสียก่อน</div><br /><div><u><strong>ขั้นตอนที่ 2.</strong></u></div><br /><div>สร้าง User ขึ้นมาเพื่อทำหน้าที่สำหรับทำหน้าที่ Replicate เท่านั้นในฝั่ง Master โดยใช้คำสั่ง</div><br /><pre>mysql&gt; GRANT REPLICATION SLAVE ON *.*</pre><pre>    -&gt; TO 'repl'@'%.192.168.0.20' IDENTIFIED BY 'slavepass';</pre><div>* โดยที่ให้สิทธิ์ให้การ Replicate จาก User ที่ชื่อว่า repl และรหัสผ่าน slavepass ที่มาจากเครื่อง IP 192.168.0.20 เท่านั้น</div><br /><div><u><strong>ขั้นตอนที่ 3.</strong></u></div><br /><div><strong>ฝั่ง Master </strong>เข้าไปแก้ไขไฟล์ my.ini ที่ C:Program FilesMySQLMySQL Server 5.1&gt;my.ini โดยเพิ่มด้านล้างหัวข้อ [mysqld] ดังนี้</div><br /><div># &mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;<br />log-bin=mysql-bin<br />server-id=1<br />innodb_flush_log_at_trx_commit=1<br />sync_binlog=1<br /># &mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;-</div><br /><div>โดยที่ :</div><br /><div>log-bin=mysql-bin # Binary Log<br />server-id=1 # ลำดับ Server master กำหนด =1<br />innodb_flush_log_at_trx_commit=1 #สำหรับผู้ใช้ฐานข้อมูลที่เป็น InnoDB จำเ็ป็นจะต้องให้ Master<br />#commit งานให้เรียบร้อยก่อน ถึงจะทำการ Replicate ไปให้ Slave<br />sync_binlog=1 # ทำการ Sync Log สำหรับ InnoDB และหากเกิด Master Crash จะไม่ทำให้ Slave Sync ข้อมูลซ้ำ ในกรณีที่ Master ฟื้นกลับมาอีกครั้ง<br /><u><strong>ขั้นตอนที่ 4.</strong></u></div><br /><div><strong>ฝั่ง Slave </strong>ให้เข้าไปแก้ไขไฟล์ my.ini ที่ C:Program FilesMySQLMySQL Server 5.1&gt;my.ini เช่นเดียวกับฝั่ง Master โดยเพิ่มด้านล้างหัวข้อ [mysqld] ดังนี้</div><br /><div>#&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;-<br />server-id=2<br />master-host=192.168.0.10<br />master-port=3306<br />master-user=repl<br />master-password-slavepass<br />master-connect-retry=30<br />replicate-wild-do-table= %.%<br />report-host=192.168.0.20<br />#&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;-</div><br /><div>โดยที่<br />server-id=2 # ลำดับ Slave หากมี Slave มากกว่า 1 ตัวสามารถกำหนด Server-id ได้จนถึง (2 ยกกำลัง 32) -1 เครื่อง<br />master-host=192.168.0.10 # หมายเลข IP เครื่อง Master<br />master-port=3306 # กำหนด Port<br />master-user=repl # ชื่อ User สำหรับการ Replicate<br />master-password-slavepass # Password<br />master-connect-retry=30 # หากติดต่อ Master ไ่ม่ได้ จะติดต่อซ้ำภายใน<br />replicate-wild-do-table= %.% #กำหนดฐานข้อมูลที่ต้องการ Replicate %.% หมายถึง Database ทุกตัว</div><br /><div><u><strong>ขั้นตอนที่ 5.</strong></u></div><br /><div>เมื่อ Master และ Slave มีข้อมูลเท่ากันแล้ว ดังในขั้นตอนที่ 1 ให้สร้างจุด Check Point เพื่อให้เป็นจุดเริ่มต้นสำหรับการ Replicate โดยใช้คำสั่ง</div><br /><pre>	mysql&gt; FLUSH TABLES WITH READ LOCK;</pre><div>ให้เรียกดูสถานะการทำงาน เพื่อดู Binary Log name และ Offset ของ Master ดังนี้</div><br /><div><a href="http://ejeepss.thaipki.com/files/2007/08/replicatemysql5.jpg" title="replicatemysql5.jpg"><img border="0" src="http://ejeepss.thaipki.com/files/2007/08/replicatemysql5.jpg" alt="replicatemysql5.jpg" /></a></div><br /><div align="center">ภาพการเรียกดู BinaryLog Name และ Offset ของ Master</div><br /><div align="left">Binary Log Name : mysql-bin.00004<br />Offset : 106</div><br /><div><u><strong>ขั้นตอนที่ 6.</strong></u></div><br /><div>กำหนดฝั่ง Client ให้ติดต่อกับฐานข้อมูล</div><br /><pre>mysql&gt; <strong>CHANGE MASTER TO</strong>  

    -&gt;     <strong>MASTER_HOST='192,168.0.10',</strong>  

    -&gt;     <strong>MASTER_USER='repl',</strong>  

    -&gt;     <strong>MASTER_PASSWORD='slavepass',</strong>  

    -&gt;     <strong>MASTER_LOG_FILE='<em>mysql-bin.00004</em>&lsquo;,</strong>  

    -&gt;     <strong>MASTER_LOG_POS=106;</strong></pre><div>และเริ่มต้น Replicate โดยใช้คำสั่ง</div><br /><div>mysql&gt; <strong>START SLAVE;</strong></div><br /><div>เพียงเท่านี้ Slave ก็จะเริ่ม Replicate ข้อมูลจาก Master แล้วครับ</div><br /><div><strong>สรุป</strong></div><br /><div>การ Replicate นั้นเป็นเพียงการพอจะรับประกันได้ว่า ข้อมูลจะไม่สูญหาย แต่ไม่ได้หมายความถึงการแบ่งการทำงานเช่น การทำ Load Balance หรือแม้กระทั่ง หาก Server มีปัญหา ไม่ใช่หมายความว่า Slave จะสามารถทำงานได้ทันที ซึ่งหากต้องการทำเช่นนั้นจะมีต้องการเช็คสถานะการทำงานของตัว Master และ Slave ที่ส่วนใหญ่จะเรียกกันว่า สาย <strong><a name="2007070100" title="2007070100"></a></strong><a name="2007070100" title="2007070100"></a>heartbeat <a name="2007070100" title="2007070100"></a>สำหรับคอยตรวจสอบสถานะซึ่งกันและกัน ซึ่งพอจะมี Software OpenSource เช่น Ultra Monky ในการทำ Load Balance (แต่ดูเหมือนจะหยุดพัฒนาไปแล้วนะ) สามารถเข้าไปดูรายละเอียดได้ที่</div><br /><div><strong>Ultra Monky</strong> : <a href="http://www.ultramonkey.org/" title="http://www.ultramonkey.org/">http://www.ultramonkey.org/</a></div><br /><div>แต่หากต้องการทำทุกสิ่งทุกอย่าง เช่น Replicate, Load Balance ทาง MySQL เองก็มีเทคโนโลยี Cluster ที่เหมาะสำหรับระบบที่ต้องการเสถียรภาพสูง (ซึ่งต้องแลกมาด้วยการใช้ Server อีกหลายตัว) โดยขั้นต่ำ ต้องใช้อย่างน้อย 4 ตัว สำหรับการทำ Cluster แต่รับประกันความเสถียร และประสิทธิภาพ โดยสามารถดูเอกสารประกอบได้ที่</div><br /><div><strong>MySQL Cluster </strong>: <a href="http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster.html" title="http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster.html">http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster.html</a></div><br /><div><em>ขอบพระคุณที่สนใจอ่าน</em></div><br /><div><strong>เอกสารอ้างอิง</strong></div><br /><div>MySQL : <a href="http://dev.mysql.com/doc/refman/5.1/en/replication.html" title="http://dev.mysql.com/doc/refman/5.1/en/replication.html">http://dev.mysql.com/doc/refman/5.1/en/replication.html</a> </div><br /></div></description>
</item>

<item>
<title>php เขียน function คำนวนพื้นที่ทั้งหมด ของ ฐานข้อมูลที่ใช้อยู่</title>
<link>http://www.mindphp.com/modules.php?name=News&amp;file=article&amp;sid=86</link>
<description><div class="box_content">
                    <pre class="php">function CalcFullDatabaseSize($database, $db) {<br /> <br />    $tables = <a href="http://www.php.net/mysql_list_tables">mysql_list_tables</a>($database, $db);<br />    if (!$tables) { return -1; }<br /> <br />    $table_count = <a href="http://www.php.net/mysql_num_rows">mysql_num_rows</a>($tables);<br />    $size = 0;<br /> <br />    for ($i=0; $i &lt; $table_count; $i++) {<br />        $tname = <a href="http://www.php.net/mysql_tablename">mysql_tablename</a>($tables, $i);<br />        $r = <a href="http://www.php.net/mysql_query">mysql_query</a>(&quot;SHOW TABLE STATUS FROM &quot;.$database.&quot; LIKE '&quot;.$tname.&quot;'&quot;);<br />        $data = <a href="http://www.php.net/mysql_fetch_array">mysql_fetch_array</a>($r);<br />        $size += ($data['Index_length'] + $data['Data_length']);<br />    };<br /> <br />    $units = <a href="http://www.php.net/array">array</a>(' B', ' KB', ' MB', ' GB', ' TB');<br />    for ($i = 0; $size &gt; 1024; $i++) { $size /= 1024; }<br />    return <a href="http://www.php.net/round">round</a>($size, 2).$units[$i];<br />}</pre>                    </div></description>
</item>

<item>
<title>วิธีใช้ การใช้โปรแกรม NETSTAT</title>
<link>http://www.mindphp.com/modules.php?name=News&amp;file=article&amp;sid=85</link>
<description><div><strong>การใช้โปรแกรม NETSTAT </strong></div><br /><div><span class="style2">เป็นคำสั่งที่ใช้ตรวจสอบ Network เกี่ยวกับการเชื่อมต่อ Port ในเครื่องเรากับเครื่องอื่นใน Network</span></div><br /><div><span class="style2"><img hspace="0" border="0" align="bottom" src="http://www.justusers.net/articles/internet/netstat/image001.png" /></span></div><br /><div><span class="style2">จากการใช้คำสั่งจาก <strong>DOS Prompt</strong> ในรูปข้างบน  เป็นการเรียกดูวิธีการใช้ของโปรแกรม <strong>netstat</strong> โดยการใส่เครื่องหมาย <strong>/?</strong> ต่อท้ายคำสั่งนั้น  (สามารถใช้ได้กับโปรแกรมอย่างอื่นในดอสได้ด้วย)  เพื่อขอดูการใช้งาน  ผมจะอธิบายที่ละบรรทัดอย่างคร่าวๆ<br /><br />และการใช้คำสั่งนี้  ไม่ว่าจะเป็น Opiton หรือใดๆก็ตาม  จะไม่เป็นอันตรายต่อเครื่อง  รวมทั้งระบบ Network  ซึ่งในการใช้  สามารถใช้ได้ในขณะที่ต่อ Internet หรือไม่ก็ตาม<br /></span></div><br /><div><br /><br /><div><span class="style2"><strong>-a   Displays all connections and listening ports.<br /><br /></strong>Opiton นี้จะเป็นการดูการเชื่อมต่อ Port ทั้งหมดที่ (เครื่องนั้นๆ=เครื่องคุณ) ที่ใช้คำสั่งนี้ได้เปิดรอการเข้ามาติดต่อ  แต่ผลที่แสดงจะเป็นรายชื่อ Service ที่ติดต่อกับเครื่อง (เครื่องนั้นๆ=เครื่องคุณ)  เช่นชื่อเว็บไซด์หรือชื่อเครื่อง  ไม่แสดงเป็นตัวเลข IP<br /></span></div><br /><br /><div><span class="style2"><strong>-e   Displays Ethernet statistics. This may be combined with the -s option.<br /><br /></strong>Opiton นี้จะเป็นการดูเหมือนกับสถิติต่างๆในการรับ/ส่งข้อมูลต่างๆ  ต้องใช้ร่วมกับ <strong>Opiton -s  </strong>เป็นการดูสถานะการรับส่งข้อมูลต่างๆ  ซึ่งลองใช้ดูได้<br /> </span></div><br /><br /><div><span class="style2"><strong>-n   Displays addresses and port numbers in numerical form.<br /><br /></strong>Opiton นี้จะเหมือนกับ <strong>-a</strong>  แต่การแสดงผลจะเป็นเลข IP กับ Port แทนชื่อเครื่องหรือชื่อเว็บไซด์ต่างๆที่ได้มีการติดต่อหรือเชื่อมการติดต่อ</span></div><br /><span class="style2"><div><br /></div><br /><hr /></span><div><br /><strong>การใช้งาน netstat (แบบดอส)</strong><br /><br />สังเกตว่า 2 ภาพด้านล่างเป็นการใช้ 2 option  การแสดงผลก็ต่างกันนิดหน่อย  แต่ความหมายแต่ละบรรทัดมีค่าเท่ากัน  เพียงแต่การแสดงแตกต่างเป็นชื่อกับตัวเลข (เลข IP/Prot) </div><br /><div><img hspace="0" border="0" align="bottom" src="http://www.justusers.net/articles/internet/netstat/image003.png" /></div><br /><div>ยังไม่เชื่อมต่อจะขึ้นแบบนี้ครับ</div><br /><div><img hspace="0" border="0" align="bottom" src="http://www.justusers.net/articles/internet/netstat/image005.png" /></div><br /><div><br />1. <strong>Proto   TCP</strong> -- คือโปรโตคอลที่เครื่องกำลังเชื่อมต่ออยู่<br /><br />2. <strong>Local Address   qillip:telnet</strong> -- [ชื่อเครื่อง qillip] : [telnet Service (port ที่เครื่องได้เปิด)]  ซึ่งตอนนี้เป็นหรือบริการที่เปิด  และเราจะรู้ได้ตรงนี้เอง  เช่นพวกโทรจัน Trojan หรือโปรแกรมบางโปรแกรมมักจะเปิด Service หรือบริการที่เปิดรอ  เพื่อจะเข้ามาควบคุมเครื่องหรือมีการแชร์เครื่อง  เพื่อใช้ในการถ่ายโอนข้อมูลระหว่างเครื่องในระบบ Network<br /><br />3. <strong>Foreign Address   qillip:0</strong> -- ชื่อเครื่อง [qillip] : [เครื่องที่เชื่อมต่อกับเครื่องที่คุณได้ใช้อยู่]  ที่เป็นเลข 0  เพราะว่าผมยังไม่ได้ต่อเน็ต<br /><br />4. <strong>State   LISTENING</strong> -- สถานะการติดต่อ  ซึ่งจะมีอยู่หลายแบบ</div><br /><div>เพื่อให้เข้าใจง่ายขึ้น  การใช้งานทั่วไป  มักจะใช้คำสั่ง <strong>C:&gt;netstat -an</strong> หรือ <strong>C:&gt;netstat -a</strong>  เวลาใช้  พิมพ์แค่ <strong>netstat -a</strong> หรือ <strong>netstat -an</strong> ที่ <strong>Dos Prompt</strong>  เพราะว่าจะทำให้มีการดูเป็นรูปแบบที่ง่ายขึ้น  ส่วน Option อื่นลองไปใช้เองดู  ซึ่งใช้เดี่ยวๆหรือคู่กันไปก็ได้  ที่ผมได้แนะนำมาแบบนี้  คำสั่งทั้ง 2 ตัวที่ผมได้ยกขึ้นมานี้ได้ครอบคลุมการดูเกือบทั้งหมดแล้ว  เพียงแต่คุณต้องไปศึกษาว่า Port แต่ละหมายเลขเป็นบริการของอะไร  เป็นโทรจันหรือไม่  อาจเป็นโปรแกรม Remote ก็ได้  ซึ่งโปรแกรม Remote จะสามารถหลบการแสกนจากโปรแกรม Anti Virus / Trojan Scan</div><br /><div>จากตัวอย่างที่ผมได้ทำเป็นแถบสีขาวให้ดูจาก 2 รูปด้านบน  ที่บริการที่ผมได้เปิด <strong>Local Address=qillip:telnet</strong>  ตรง <strong>telnet  </strong>คุณต้องรู้ว่า <strong>telnet</strong> คือ <strong>port 23</strong>  หรืออาจพิมพ์คำสั่ง <strong>netstat -an</strong> เพื่อตรวจดูหมายเลข port  ซึ่งจะอยู่บรรทัดเดียวกันดัง 2 รูปข้างต้น  (ถ้าใช้ในเวลาเดียวกัน 2 Option  ทั้ง -a และ -an และ -n  คุณลองใช้ดูครับ  การแสดงผลจะได้ค่าที่เหมือนกัน  แต่แตกต่างที่จะเป็นชื่อบริการที่คุณได้เปิดหรือเป็นแบบตัวเลข IP)<br /><br />(ตอนนี้ผมได้ต่อ Internet) ดังรูปด้านล่าง<br /></div><br /><div><img hspace="0" border="0" align="bottom" src="http://www.justusers.net/articles/internet/netstat/image007.png" /></div><br /><div><strong>สีเหลือง</strong> เป็นสถานะ <strong>ESTABLISHED</strong><br /><br /><strong>Local Address</strong> ซึ่ง IP ผมคือ 203.118.74.149 ได้เปิด port 135 เอาไว้และเข้ามาที่เครื่องทาง port นี้<br /><strong>Foreign Address</strong> เป็น IP ของเครื่องที่มา hack เครื่องผมคือ 203.118.82.158 <br /><strong>State</strong> เป็นสถานะ <strong>ESTABLISHED</strong>  หมายความว่า  เป็นการเชื่อมต่อระหว่างเครื่อง 2 เครื่องได้แล้ว  พูดอีกแบบคือ  มีเครื่องอื่นได้เข้ามาในเครื่องผมแล้ว<br /><br /><br /><strong>สีฟ้า</strong> เป็นสถานะ <strong>LISTENING</strong><br /><br /><strong>Local Address</strong> ซึ่ง IP ผมคือ 203.118.74.149 ได้เปิด port 139 <br /><strong>Foreign Address</strong> ยังไม่มีเครื่องใดมาทำการติดต่อ<br /><strong>State</strong> เป็นสถานะ <strong>LISTENING</strong>  คือรอการติดต่อ  ซึ่งเครื่องอื่นสามารถเข้าได้ทางนี้<br /><br /><strong>**</strong> ให้สังเกตเครื่องคุณ  ถ้าได้มีตัวนี้อยู่บรรทัดไหน  ให้สังเกตที่บรรทัดเดียวกันว่า  เครื่องคุณได้เปิด Port ไหนเอาไว้บ้าง **<br /><br /><br /><strong>สีม่วง</strong> เป็นสถานะ <strong>TIME_WAIT</strong><br /><br /><strong>Local Address</strong> ซึ่ง IP ผมคือ 203.118.74.149 ได้เปิด port 139<br /><strong>Foreign Address</strong> เครื่องที่มี IP 203.118.74.110 ได้กำลังแสกนเครื่องผมอยู่  เพื่อหาช่องโหว่ <br /><strong>State</strong> เป็นสถานะ <strong>TIME_WAIT</strong>  คือเค้ากำลังแสกนเครื่องผมโดยผ่าน port 139  กำลังแสกน  หรืออีกความหมายคือ  เครื่องนั้นอาจกำลังถอด password เครื่องคุณอยู่ก็ได้<br /><br /><br /><strong>TIP :</strong>  ซึ่งตอนนี้คุณคงอ่าน  และคงสามารถที่จะเดาได้ว่าแต่ละบรรทัดที่โปรแกรมแสดงหมายความว่าอะไรบ้าง  แต่ถ้าใช้ Option ดังรูปข้างบน (ต่อ Internet)  ให้พิมพ์คำสั่ง <strong>netstat -a</strong>  เพื่อจะแสดงเป็นชื่อ  ซึ่งบางทีในสถานะ <strong>ESTABLISHED</strong> หมายความว่า  มีเครื่องอื่นได้เข้ามาในเครื่องผมแล้วนั้น  อาจเป็นเว็บไซด์ที่คุณกำลังดาว์นโหลดอยู่ก็ได้  คำสั่ง <strong>netstat -a</strong> จะแสดงเป็นชื่อเว็บต่างๆ  ซึ่งถ้าใช้คำสั่ง <strong>netstat -an</strong> จะแสดงเป็นตัวเลข <strong>IP</strong>  ยากต่อการเดา  และการดูจริงๆคุณต้องสังเกตที่ port ที่เครื่องคุณด้วยว่าเป็น port ที่ใช้ทำอะไร<br /><br /><br /><strong>HACK :</strong>  ถ้าคุณกำลัง chat อยู่  ไม่ว่าจะเป็น icq , msn , yahoo ect.. ก็ตาม  และได้มีการรับ/ส่งไฟล์ระหว่างเครื่องเกิดขึ้น  ให้พิมพ์คำสั่ง <strong>netstat -an</strong> หรือ <strong>netstat -a</strong> หรือ <strong>netstat -n</strong> ก็ได้  โปรแกรมนี้จะมีการแสดงเลข IP ต่างๆที่คุณได้ติดต่ออยู่  และคุณรู้ IP เครื่องเป้าหมายแล้ว  อิอิ  ถ้ามีความรู้ในเรื่องอื่น  ก็นำมาใช้ได้เลย<br /><br /><br />นี่คือการทำงานโดยใช้ดอสแบบทั่วไป  ให้คุณลองดูว่าเครื่องคุณได้เปิด Port อะไรไว้บ้าง  ถ้ามีการเปิดที่เยอะมาก  คุณต้องรู้ว่าแต่ละ Port ไหนโปรแกรมอะไรเป็นตัวเปิด  โดยทำการค้นหาได้จากโปรแกรมที่คุณใช้ได้ถนัด  ซึ่งแล้วแต่คนจะถนัดทางไหน  และหัวข้อต่อไป  ผมจะอธิบายการใช้โปรแกรมอีกตัว  ซึ่งใช้ได้ดีมากสำหรับการหาโปรแกรมตัวแสบ  ที่แอบมาเปิด port  และยังสามารถใช้งานได้อีกหลายอย่าง  แทนโปรแกรม NETSTAT ได้ดีอีกด้วย  แถมยังมีโปรแกรมให้ HACK เครื่องแถมมาด้วย <br /><br /><strong>**</strong> การกระทำใดๆที่ละเมิดสิทธิผู้อื่นโดยเจตนา  มันไม่ดีเลยนะครับ  และถ้าคุณคิดที่จะทำ  ผมขอแนะว่า ต้องมีสติรู้ว่ากำลังทำอะไรอยู่  ทำเพื่ออะไร  ผลที่คุณจะได้จะคุ้มค่าหรือไม่ <strong>**</strong><br /><br /><br />ที่ผมชอบใช้แบบ dos  เพราะว่าชีวิตจริงคุณไม่ได้เล่นแค่เครื่องคุณเองเครื่องเดียว  แต่คุณต้องไปทำอะไรต่างๆที่เครื่องอื่น  และโปรแกรมนี้มีอยู่ในเครื่องทุกเครื่องอยู่แล้ว  ซึ่งไม่ว่าเครื่องไหนที่เป็นระบบ Window คุณก็ใช้คำสั่งนี้ได้  เพราะไม่งั้นคุณต้องหอบโปรแกรมไปติดตั้ง  ยุ่งยาก  ผมจึงอยากให้ใช้เป็นพวกโปรแกรมในดอสนี่แหละ  พระเอกตัวจริงเวลาเครื่องมีปัญหา </div><br /><div><span class="style2"><u><strong>PORT</strong></u><br /><br />WINDOW นั้น เปิด Port ไหนเป็นมาตรฐาน??<br /><strong>98 + ME</strong> จะเปิด port <strong>139 , 445</strong><br /><strong>2000 Pro</strong> จะเปิด port <strong>139 , 445</strong><br /><strong>2000 Advance Server</strong> จะเปิด port <strong>53 , 88 , 139 , 445</strong><br /><br /><br /><strong>TROJAN PORT</strong> <br /><br />31 : Master Paradise<br />121 : BO jammerkillahV<br />456 : HackersParadise<br />555 : Phase Zero<br />666 : Attack FTP<br />1001 : Silencer<br />1001 : Silencer<br />1001 : WebEx<br />1010 : Doly Trojan 1.30 (Subm.Cronco)<br />1011 : Doly Trojan 1.1+1.2<br />1015 : Doly Trojan 1.5 (Subm.Cronco)<br />1033 : Netspy<br />1042 : Bla1.1<br />1170 : Streaming Audio Trojan<br />1207 : SoftWar<br />1243 : SubSeven<br />1245 : Vodoo<br />1269 : Maverick's Matrix<br />1492 : FTP99CMP<br />1509 : PsyberStreamingServer Nikhil G.<br />1600 : Shiva Burka<br />1807 : SpySender<br />1981 : ShockRave<br />1999 : Backdoor<br />1999 : Transcout 1.1 + 1.2<br />2001 : DerSpaeher 3<br />2001 : TrojanCow<br />2023 : Pass Ripper<br />2140 : The Invasor Nikhil G.<br />2283 : HVL Rat5<br />2565 : Striker<br />2583 : Wincrash2<br />2801 : Phineas Nikhil G. <br />3791 : Total Eclypse (FTP)<br />4567 : FileNail Danny<br />4950 : IcqTrojan<br />4950 : IcqTrojen<br />5000 : Socket23<br />5011 : OOTLT<br />5031 : NetMetro1.0<br />5400 : BladeRunner<br />5400 : BackConstruction1.2<br />5521 : IllusionMailer<br />5550 : XTCP 2.0 + 2.01<br />5569 : RoboHack<br />5742 : Wincrash<br />6400 : The tHing<br />6669 : Vampire 1.0<br />6670 : Deep Throat<br />6883 : DeltaSource (DarkStar)<br />6912 : Shitheep<br />6939 : Indoctrination<br />7306 : NetMonitor<br />7789 : iCkiller<br />9872 : PortalOfDoom<br />9875 : Portal of Doom<br />9989 : iNi-Killer<br />9989 : InIkiller<br />10607 : Coma Danny<br />11000 : SennaSpyTrojans<br />11223 : ProgenicTrojan<br />12076 : Gjamer<br />12223 : Hackด99 KeyLogger<br />12346 : NetBus 1.x (avoiding Netbuster)<br />12701 : Eclipse 2000<br />16969 : Priotrity<br />20000 : Millenium<br />20034 : NetBus Pro<br />20203 : Logged!<br />20203 : Chupacabra<br />20331 : Bla<br />21544 : GirlFriend<br />21554 : GirlFriend<br />22222 : Prosiak 0.47<br />23456 : EvilFtp<br />27374 : Sub-7 2.1<br />29891 : The Unexplained<br />30029 : AOLTrojan1.1<br />30100 : NetSphere<br />30303 : Socket25<br />30999 : Kuang<br />31787 : Hack'a'tack<br />33911 : Trojan Spirit 2001 a<br />34324 : Tiny Telnet Server<br />34324 : BigGluck TN<br />40412 : TheSpy<br />40423 : Master Paradise<br />50766 : Fore<br />53001 : RemoteWindowsShutdown<br />54320 : Back Orifice 2000 (default port)<br />54321 : Schoolbus 1.6+2.0<br />61466 : Telecommando<br />65000 : Devil 1.03</span></div><br /></div></description>
</item>

<item>
<title>Html html คืออะไร</title>
<link>http://www.mindphp.com/modules.php?name=News&amp;file=article&amp;sid=84</link>
<description><h1 class="firstHeading">HTML คืออะไร <br /></h1><br /><p><strong>HTML</strong> (ชื่อเต็มคือ <strong>Hypertext Markup Language</strong> <em>ภาษามาร์กอัปข้อความหลายมิติ</em>) คือ<a title="ภาษามาร์กอัป" href="http://th.wikipedia.org/wiki/%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0%B8%B2%E0%B8%A1%E0%B8%B2%E0%B8%A3%E0%B9%8C%E0%B8%81%E0%B8%AD%E0%B8%B1%E0%B8%9B">ภาษามาร์กอัป</a>ออกแบบมาเพื่อใช้ในการสร้าง<a title="เว็บเพจ" href="http://th.wikipedia.org/wiki/%E0%B9%80%E0%B8%A7%E0%B9%87%E0%B8%9A%E0%B9%80%E0%B8%9E%E0%B8%88">เว็บเพจ</a> หรือข้อมูลอื่นที่เรียกดูผ่านทาง<a title="เว็บเบราว์เซอร์" href="http://th.wikipedia.org/wiki/%E0%B9%80%E0%B8%A7%E0%B9%87%E0%B8%9A%E0%B9%80%E0%B8%9A%E0%B8%A3%E0%B8%B2%E0%B8%A7%E0%B9%8C%E0%B9%80%E0%B8%8B%E0%B8%AD%E0%B8%A3%E0%B9%8C">เว็บเบราว์เซอร์</a> เริ่มพัฒนาโดย <a title="ทิม เบอร์เนอรส์ ลี" href="http://th.wikipedia.org/w/index.php?title=%E0%B8%97%E0%B8%B4%E0%B8%A1_%E0%B9%80%E0%B8%9A%E0%B8%AD%E0%B8%A3%E0%B9%8C%E0%B9%80%E0%B8%99%E0%B8%AD%E0%B8%A3%E0%B8%AA%E0%B9%8C_%E0%B8%A5%E0%B8%B5&action=edit">ทิม เบอร์เนอรส์ ลี</a> (Tim Berners Lee) สำหรับภาษา <a title="SGML" href="http://th.wikipedia.org/w/index.php?title=SGML&action=edit">SGML</a> ในปัจจุบัน HTML เป็นมาตรฐานหนึ่งของ <a title="ISO" href="http://th.wikipedia.org/wiki/ISO">ISO</a> ซึ่งจัดการโดย World Wide Web Consortium (W3C) ในปัจจุบัน ทาง W3C ผลักดัน รูปแบบของ HTML แบบใหม่ ที่เรียกว่า <a title="XHTML" href="http://th.wikipedia.org/wiki/XHTML">XHTML</a> ซึ่งเป็นลักษณะของโครงสร้าง <a title="XML" href="http://th.wikipedia.org/wiki/XML">XML</a> แบบหนึ่งที่มีหลักเกณฑ์ในการกำหนดโครงสร้างของโปรแกรมที่มีรูปแบบที่มาตรฐานกว่า มาทดแทนใช้ HTML รุ่น 4.01 ที่ใช้กันอยู่ในปัจจุบัน</p>
<p>HTML ยังคงเป็น<a title="รูปแบบไฟล์" href="http://th.wikipedia.org/w/index.php?title=%E0%B8%A3%E0%B8%B9%E0%B8%9B%E0%B9%81%E0%B8%9A%E0%B8%9A%E0%B9%84%E0%B8%9F%E0%B8%A5%E0%B9%8C&action=edit">รูปแบบไฟล์</a>อย่างหนึ่ง สำหรับ .html และ สำหรับ .htm ที่ใช้ในระบบปฏิบัติการที่รองรับ รูปแบบนามสกุล 3 ตัวอักษร</p><br /></description>
</item>

<item>
<title> วิธีค้นหา ebook ใน google</title>
<link>http://www.mindphp.com/modules.php?name=News&amp;file=article&amp;sid=83</link>
<description><div class="entrytitle">
  							   <h1><a href="http://codesnippet.exteen.com/20060810/ebook-google">วิธีค้นหา ebook ใน google</a></h1>
  							</div><div class="entrycontent">
  								<p>วิธีค้นหา ebook ใน google ครับ</p><li>+(&quot;index of&quot;) +(&quot;/ebooks&quot;|&quot;/book&quot;) +(chm|pdf|zip|rar) +apache </li><li>allinurl: +(rar|chm|zip|pdf|tgz) TheTitle </li><li>&quot;Book&quot; ext:chm chm </li><li>&quot;Book&quot; ext:chm chm </li><li>&quot;<span class="st">ebook</span>&quot; inurl:ftp intext:chm </li><li>index of /pub/* intext:chm </li><li>?intitle:index.of? <span class="st">ebook</span> (or ebooks, try with different words like mp3, etc...) </li><li>inurl:OReilly filetype:chm (or pdf or html or zip or rar, etc...)</li>
    							</div></description>
</item>

<item>
<title>การ select ข้อมูล จาก สองตาราง Mysql ใช้ได้ กับ Sql มาตรฐาน ใช้ การ Joins ตารางก</title>
<link>http://www.mindphp.com/modules.php?name=News&amp;file=article&amp;sid=82</link>
<description><h1>การ Select ข้อมูล จาก สองตาราง Mysql ใช้ได้ กับ Sql มาตรฐาน ใช้การ Joins&nbsp;<br /> </h1>สมมุต มี ตารางสองตางราง มีโครงสร้าง และข้อมูลดังนี้<br /><p><strong>Employees</strong>:</p>
<table width="60%" cellspacing="0" border="1" class="ex">
  <tr>
    Employee_ID
    Name
  </tr>
  <tr>
    <td>01</td>
    <td>Hansen, Ola</td>
  </tr>
  <tr>
    <td>02</td>
    <td>Svendson, Tove</td>
  </tr>
  <tr>
    <td>03</td>
    <td>Svendson, Stephen</td>
  </tr>
  <tr>
    <td>04</td>
    <td>Pettersen, Kari</td>
  </tr>
</table>

<p><strong>Orders:</strong></p>
<table width="60%" cellspacing="0" border="1" class="ex">
  <tr>
    Prod_ID
    Product
    Employee_ID
  </tr>
  <tr>
    <td>234</td>
    <td>Printer</td>
    <td>01</td>
  </tr>
  <tr>
    <td>657</td>
    <td>Table</td>
    <td>03</td>
  </tr>
  <tr>
    <td>865</td>
    <td>Chair</td>
    <td>03</td>
  </tr>
</table>
<br />โดยที่ ตาราง <strong>Orders มี  field </strong>Employee_ID เป็น Foreign Key เป็น Key ที่ใช้ เชื่อม ระหว่างตาราง <strong>Orders</strong> กับ ตาราง <strong>Employees   </strong>โดยที่ ตารางลูกค้า(<strong>Employees</strong>) จะมี field รหัสลูกค้า(Employee_ID)  เป็น keyหลัก <br />จากสอง ตารางดังกล่าวเป็นความสัมพันธ์ แบบ 1:N (One-to-Many) เนื่องจากลูกค้า 1 คนสามารถมีรายการสั่งสินค้าได้หลาย รายการ <br />ถ้าเราจะดึงข้อมูลจากสอง ตารางนี้มาแสดง ทำได้ สองวิธีคือ <br /><strong>วิธีที่ 1.  </strong>ใช้การ referring จากสอง ตาราง <br />sql---&gt; SELECT Employees.Name, Orders.Product FROM Employees, Orders WHERE Employees.Employee_ID=Orders.Employee_ID<br />อธิบาย--&gt; เราจะใช้ Employee_ID เป็นตัวอ้างถึงจากสอง ตาราง และ การเลือก field ก็ต้องบอกด้วย ชื่อตาราง.ชื่อ field <br />ผล---&gt; <br />
<table width="60%" cellspacing="0" border="1" class="ex">
  <tr>
    <strong>Name</strong>
    Product
  </tr>
  <tr>
    <td>Hansen, Ola</td>
    <td>Printer</td>
  </tr>
  <tr>
    <td>Svendson, Stephen</td>
    <td>Table</td>
  </tr>
  <tr>
    <td>Svendson, Stephen</td>
    <td>Chair</td>
  </tr>
</table>

<br /><strong>วิธีที่ 2. </strong>ใช้การ Joins กันของ สองตาราง <br />Syntax---&gt; SELECT field1, field2, field3 FROM first_table INNER JOIN second_table ON first_table.keyfield = second_table.foreign_keyfield<br />sql----&gt;  SELECT Employees.Name, Orders.Product FROM Employees INNER JOIN Orders ON Employees.Employee_ID=Orders.Employee_ID<br />อธิบาย--&gt; เราจะใช้ INNER JOIN เข้ามาช่วยเพื่อบอกว่า เราจะเชื่อม ตารางสอง ตางราง และใช้ Foreign Key เป็นตัวอ้างถึงสองตาราง ที่มีความ สัมพันธ์ กัน <br />ผล--&gt;<br /><table width="60%" cellspacing="0" border="1" class="ex"><tr><strong>Name</strong>
    Product
  </tr>
  <tr>
    <td>Hansen, Ola</td>
    <td>Printer</td>
  </tr>
  <tr>
    <td>Svendson, Stephen</td>
    <td>Table</td>
  </tr>
  <tr>
    <td>Svendson, Stephen</td>
    <td>Chair</td>
  </tr>
</table>

<br /> </description>
</item>

<item>
<title>วิธีติดตั้ง Joomla 1.5 ขั้นตอน การติดตั้ง การ Install</title>
<link>http://www.mindphp.com/modules.php?name=News&amp;file=article&amp;sid=81</link>
<description><table width="100%" cellpadding="1" border="0">
  <tr>
    <td><h1>วิธีติดตั้ง Joomla 1.5 </h1></td>
  </tr>
  <tr>
    <td><p>ก่อน ติดตั้ง ต้องจำลอง เครื่อง เราเป็น Web Server ก่อน ตามลิงค์นี้ครับ <br />
      <a href="modules.php?name=News&file=article&sid=15&mode=thread&order=0&thold=0">http://www.mindphp.com/modules.php?name=News&amp;file=article&amp;sid=15&amp;mode=thread&amp;order=0&amp;thold=0      </a> <br />
      และเตรียมฐานข้อมูล ตามรูปด้านล่างนี้ <br />
      <img border="0" alt="สร้างฐานข้อมูล สำหรับติดตั้ง Joomla 1.5" src="images/Joomla15/create_databases.png" title="Joomla การติดตั้ง วิธีติดตั้ง" /></p>
	  
    </td>
  </tr>
  <tr>
    <td><h2>ขั้นตอน การติดตั้ง Joomla 1.5 </h2></td>
  </tr>
  <tr>
    <td>1.ดาวน์โหลด Joomla 1.5 มาก่อน โหลด และ ติดตามข่าวความเคลื่อนไหว ได้ที่<br />
      <a href="modules.php?name=Forums&file=viewtopic&t=2551">http://www.mindphp.com/modules.php?name=Forums&amp;file=viewtopic&amp;t=2551</a></td>
  </tr>
  <tr>
    <td>2.เมื่อดาวน์โหลด มาแล้ว ให้ Unzip Joomla-1.5.0.zip ไฟล์ ไปไว้ที่ D:xampphtdocsjoomla15 <br />
    <img border="0" alt="ดาวน์โหลด มาแล้ว ให้ Unzip Joomla-1.5.0.zip " src="images/Joomla15/unzip.png" title="Joomla การติดตั้ง วิธีติดตั้ง" /></td>
  </tr>
  <tr>
    <td>3.เข้าไปที่ http://localhost/joomla15/ จะได้หน้าจอดังที่ </td>
  </tr>
  <tr>
    <td>4.เลือกภาษา การแสดงผล  สำหรับการติดตั้ง Joomla 1.5 </td>
  </tr>
  <tr>
    <td><img width="0" height="0" border="0" alt="เลือกภาษา สำหรับ การแสดงผล  สำหรับการติดตั้ง " src="http%7C/www.mindphp.com/images/Joomla15/select_lang_thai.png" /></td>
  </tr>
  <tr>
    <td>5.ตรวจสอบก่อนการติดตั้งสำหรับ ต้องเป็นสีเขียวทั้งหมด ถ้ามี สีแดงอยู่ ให้ปรับแต่ server ก่อน แล้ว คลิก ตรวจสอบอีกครั้ง<br />
    ถ้ามีสีเขียวทั้งหมดแล้ว ให้ คลิก ปุ่ม ถัดไป ได้เลย </td>
  </tr>
  <tr>
    <td><img border="0" alt="ตรวจสอบ config ของ server สำหรับ การติดตั้ง joomla 1.5" src="images/Joomla15/pre_install_joomla15.png" title="Joomla การติดตั้ง วิธีติดตั้ง " /></td>
  </tr>
  <tr>
    <td>6.ลิขสิทธิ์ ของโปรแกรม Joomla 1.5  คลิก ปุ่ม ถัดไป </td>
  </tr>
  <tr>
    <td><img border="0" alt=".ลิขสิทธิ์ ของโปรแกรม Joomla 1.5 " src="images/Joomla15/joomla_LICENSE.png" title="Joomla การติดตั้ง วิธีติดตั้ง" /></td>
  </tr>
  <tr>
    <td>7.กรอกรายละเอียดของ ฐานข้อมูล <br />
      ชนิดฐานข้อมูล ให้เลือก เป็น Mysql<br />
      ชื่อโฮสต์  ใส่เป็น <strong>localhost</strong><br />
      ชื่อผู้ใช้ฐานข้อมูล,รหัสผ่าน,ชื่อฐานข้อมูล   ตามที่เราได้กำหนดไว้ <br />
    เมื่อกรอกเรียนร้อยแล้วให้คลิก ปุ่ม ถัดไป <br />
    <img border="0" alt="กรอก รายละเอียดฐานข้อมูล Joomla การติดตั้ง วิธีติดตั้ง " src="images/Joomla15/joomla_databases.png" title="Joomla การติดตั้ง วิธีติดตั้ง " /></td>
  </tr>
  <tr>
    <td>8.กำหนดรายละเอียดเกี่ยวกับ FTP สำหรับ ติดตั้งที่ เครื่องตัวเองไม่ต้องกำหนด <br />
    <img border="0" alt="FTP สำหรับ ติดตั้งที่ เครื่องตัวเอง Joomla การติดตั้ง วิธีติดตั้ง" src="images/Joomla15/joomla_ftp.png" title="Joomla การติดตั้ง วิธีติดตั้ง " /></td>
  </tr>
  <tr>
    <td>9.กำหนด ชื่อเว็บ e-mail และรหัสผ่านของ admin<br />
    <img border="0" alt="กำหนด ชื่อเว็บ e-mail และรหัสผ่านของ admin ของ การติดตั้ง Joomla 1.5 " src="images/Joomla15/joomla_config_admin.png" title="กำหนด ชื่อเว็บ e-mail และรหัสผ่านของ admin ของ การติดตั้ง Joomla 1.5" /></td>
  </tr>
  <tr>
    <td>10.เสร็จ<br />
        <img border="0" alt="ติดตั้ง Joomla เสร็จสิน " src="images/Joomla15/joomla_setup_finish.png" title="Joomla การติดตั้ง วิธีติดตั้ง " /><br />
      ไปที่<br />
    http://localhost/joomla15/administrator/<br />
    <img border="0" alt="Login ใน ฐานนะ admin ใน Joomla 1.5" src="images/Joomla15/joomla_admin_login.png" title="Joomla การติดตั้ง วิธีติดตั้ง " /></td>
  </tr>
  <tr>
    <td>หน้าจอ ของ admin <br />
    <img border="0" alt="joomla admin panel " src="images/Joomla15/joomla_admin_panel.png" title="Joomla การติดตั้ง วิธีติดตั้ง" /> <br />
    <a href="modules.php?name=Forums">สำหรับการใช้งาน หรือมีข้อสงสัยในการติดตั้ง สอบถามได้ที่</a><br /></td>
  </tr>
  <tr>
    <td><div align="center"><strong>เสร็จสินการติดตั้ง Joomla 1.5 </strong></div></td>
  </tr>
</table>
</description>
</item>

</channel>
</rss>