<?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>Heem : Knowledge Sharing &#187; fsockopen</title>
	<atom:link href="http://www.heemza.com/tag/fsockopen/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.heemza.com</link>
	<description>มีอะไร เอาออกมาแชร์ !!</description>
	<lastBuildDate>Sun, 09 May 2010 03:06:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>ตรวจสอบอีเมล์ด้วย PHP</title>
		<link>http://www.heemza.com/2009/01/email-validation-by-php/</link>
		<comments>http://www.heemza.com/2009/01/email-validation-by-php/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 15:33:00 +0000</pubDate>
		<dc:creator>heem</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[fsockopen]]></category>
		<category><![CDATA[getmxrr]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Validation]]></category>

		<guid isPermaLink="false">http://www.heemza.com/?p=190</guid>
		<description><![CDATA[เมื่อ 2 สัปดาห์ก่อน ได้เข้าไปเดินเล่น ที่บล็อกของคุณ icez และไปเจอที่ได้เขียนไว้เกี่ยวกับ PHP Email Validation เห็นแล้วก็น่าสนใจดีครับ วันนี้จึงจะนำมาโมฯ ต่อ จากของผมที่ใช้อยู่เดิมๆ เดิมๆ นั้น ผมจะใช้การตรวจสอบอีเมล์ ดังตัวอย่างด้านล่างนี้ครับ ซึ่งผมก็ใช้ฟังก์ชั่นด้านบน ในการตรวจสอบอีเมล์ตลอด แต่หลังจากที่ได้ไปเห็นในบล็อกคุณ icez ดังกล่าว และก็ได้ตามไปดูถึงแหล่ง (ที่คุณ icez เจอมาอีกที) ก็เลยศึกษา(คร่าวๆ) ดู แล้วเป็นที่น้าสนใจมากครับ โดยต้นฉบับเขียนฟังก์ชั่นไว้ดังนี้ เป็นอย่างไรครับ เริ่มน่าสนใจแล้วสินะครับ แต่เนื่องจาก พอมารันดู ก็อาจพบข้อความผิดพลาดคือ Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known Warning: fsockopen() [function.fsockopen]: unable to connect to :25 (Unknown [...]]]></description>
			<content:encoded><![CDATA[<p>เมื่อ 2 สัปดาห์ก่อน ได้เข้าไปเดินเล่น ที่บล็อกของคุณ <a href="http://www.icez.net/blog/19/php-email-validation" target="_blank">icez</a> และไปเจอที่ได้เขียนไว้เกี่ยวกับ PHP Email Validation เห็นแล้วก็น่าสนใจดีครับ วันนี้จึงจะนำมาโมฯ ต่อ จากของผมที่ใช้อยู่เดิมๆ</p>
<p>เดิมๆ นั้น ผมจะใช้การตรวจสอบอีเมล์ ดังตัวอย่างด้านล่างนี้ครับ</p>
<pre class="brush: php; title: ; notranslate">
function checkEmail($email){
  if(!eregi(&quot;^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$&quot;, $email)) {
    return false;
  }else{
    return true;
  }
}
</pre>
<p><span id="more-190"></span><br />
ซึ่งผมก็ใช้ฟังก์ชั่นด้านบน ในการตรวจสอบอีเมล์ตลอด แต่หลังจากที่ได้ไปเห็นในบล็อกคุณ icez ดังกล่าว และก็ได้ตามไปดูถึงแหล่ง (ที่คุณ icez เจอมาอีกที) ก็เลยศึกษา(คร่าวๆ) ดู แล้วเป็นที่น้าสนใจมากครับ โดยต้นฉบับเขียนฟังก์ชั่นไว้ดังนี้</p>
<pre class="brush: php; title: ; notranslate">
function checkEmail($email){
  if(eregi(&quot;^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]&quot;, $email)) {
    return FALSE;
  }

  list($Username, $Domain) = split(&quot;@&quot;,$email);

  if(getmxrr($Domain, $MXHost)) {
    return TRUE;
  }else{
    if(fsockopen($Domain, 25, $errno, $errstr, 30)) {
      return TRUE;
    }else{
      return FALSE;
    }
  }
}
</pre>
<p>เป็นอย่างไรครับ เริ่มน่าสนใจแล้วสินะครับ แต่เนื่องจาก พอมารันดู ก็อาจพบข้อความผิดพลาดคือ</p>
<blockquote><p>Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known</p>
<p>Warning: fsockopen() [function.fsockopen]: unable to connect to :25 (Unknown error)</p></blockquote>
<p>ข้อความนี้ผมเจอกับตัว และก็มีคนโพสไว้ที่บล็อกคุณ icez ด้วยเช่นกัน? แต่จากข้อสันนิษฐานของผมคือ ถ้าเรากรอกอีเมล์ ที่ไม่มีโดเมนอยู่จริง มันจะขึ้นเตือนดังกล่าว เช่น <a href="mailto:heem@e.com">heem@e.com</a></p>
<p>ดังนั้นเพื่อแก้ปัญหา(เฉพาะหน้า) ผมก็เลยจัดแจงใส่ @ ไว้หน้า fsockopen (บรรทัด 16) เพื่อไม่ให้แจ้งข้อผิดพลาด หากเกิดกรณีดังกล่าว และผมก็ได้เปลี่ยนการเช็ครูปแบบอีเมล์ใหม่ (บรรทัดที่ 2) ด้วยเช่นกันครับ (เพราะรู้สึกว่าเขาตก เครื่องหมาย ! ไปหรือไม่?) แต่อย่างไรก็ดี ผมก็ได้เอาการเช็ครูปแบบอีเมล์ จากฟังก์ชั่นเดิมของผมมาแทน ที่</p>
<p>และแล้ว หลังจากโมฯ ก็ได้มาเป็นแบบนี้ครับ</p>
<pre class="brush: php; title: ; notranslate">
function checkEmail($email) {
  if(!eregi(&quot;^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$&quot;, $email)){
    return false;
  }

  list($Username, $Domain) = split(&quot;@&quot;,$email);

  if(getmxrr($Domain, $MXHost)){
    return TRUE;
  }else{
    if(@fsockopen($Domain, 25, $errno, $errstr, 30)){
      return TRUE;
    }else {
      return FALSE;
    }
  }
}
</pre>
<p>ผมลองเช็คดู ยังไม่พบปัญหานะครับ ท่านสามารถเนาไปใช้หรือประยุกต์ต่อได่นะครับ <img src='http://www.heemza.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':grin:' class='wp-smiley' /> </p>
<p> <img src='http://www.heemza.com/wp-includes/images/smilies/icon_idea.gif' alt=':idea:' class='wp-smiley' />  <span style="color: #ff0000;">หมายเหตุ</span> หากรันบน Windows จะพบปัญหาไม่มีฟังชั่น<span style="color: #008000;">getmxrr</span> นะครับ เนื่องจาก ฟังก์ชั่น <span style="color: #008000;">getmxrr</span> สามารถใช้ได้เฉพาะ Linux เท่านั้นนะครับ</p>
]]></content:encoded>
			<wfw:commentRss>http://www.heemza.com/2009/01/email-validation-by-php/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

