PHP

Home

PHP Tutorial
Knowledge Developer Database Internet Resource
ฟังก์ชันเมล์และเครือข่าย
1. ภาพรวมของโปรโตคอล
2. การส่งและอ่านอีเมล์
3. ฟังก์ชันมองหาเครือข่าย
 
PHP ระดับสูง
1. การอัพโหลด
2. ฟังก์ชันเมล์และเครือข่าย
3. วันที่และเวลา
4. กราฟฟิกและภาพ
 
PHP
PHP เบื้องต้น
การสร้างโปรแกรมประยุกต์เว็บ
PHP ระดับสูง
 
Internet
PHP
SSI
HTML
AJAX
 
PHP ระดับสูง > ฟังก์ชันเมล์และเครือข่าย

ฟังก์ชันมองหาเครือข่าย

PHP มีชุดของฟังก์ชัน”มองหา” ที่สามารถใช้ตรวจสารสนเทศของชื่อโฮลต์ IP address และเมล์ ตัวอย่างเช่น ถ้ากำลังตั้งค่าไดเรคทอรี เช่น Yahoo เมื่อ URL ใหม่ได้รับการส่งค่า อาจจะด้องมีการตรวจสอบโฮสต์ของ URL และสารสนเทศติดต่อ ด้วยวิธีนี้สามารถประหยัดเวลาการสืบค้นเมื่อการทบทวนพบว่า URL ไม่มีอยู่จริง หรือที่อยู่อีเมล์ไม่ถูกต้อง

รายการคำสั่ง 3.2.3 แสดงฟอร์ม HTML ส่งข้อมูลของ URL และที่อยู่อีเมล์

 

<html>
<head>
<title>Site Verification</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
</head>

<body>
<h1> ตรวจสอบเว็บไซต์</h1>
<form name="form1" method="post" action="site_verified.php">
<table width="80%"  border="0">
<tr>
<td width="20%">URL</td>
<td><input name="url" type="text" id="url" size="50" maxlength="100"></td>
</tr>
<tr>
<td>อีเมล์</td>
<td><input name="email" type="text" id="email" size="50" maxlength="100">
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Submit"></td>
</tr>
</table>
</form>
<p>&nbsp;</p>
</body>
</html>

ตัวอย่างตามภาพ 3.2.3 เป็นฟอร์มอย่างง่ายสำหรับการส่งสารสนเทศ url และ ที่อยู่อีเมล์


ภาพ 3.2.3 ฟอร์มอย่างง่ายสำหรับการส่งสารสนเทศ url

เมื่อคลิกปุ่ม Submit สิ่งแรกที่ต้องการตรวจสอบคือ URL เป็นโฮสต์บนเครื่องจริงและสิ่งที่ 2 คือ ส่วนโฮสต์ได้รับการแสดงตามภาพ 3.2.4


ภาพ 3.2.4 ผลลัพธ์การตรวจสอบ url และโฮสต์ของอีเมล์

สคริปต์นี้ทำการตรวจสอบด้วย 2 ฟังก์ชัน จากชุดฟังก์ชันเครือข่ายของ PHP คือ gethostbyname() และ  getmxrr() สคริปต์เติมแสดงในรายการคำสั่ง 3.2.3

รายการคำสั่ง 3.2.4 สคริปต์ site_verified.php สำหรับการตรวจสอบ URL

 

<html>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<head>
<title>Site verified results</title>
</head>
<body>
<h1>ผลลัพธ์การตรวจสอบเว็บไซต์</h1>
<?php
/* -------------------------------
* ตรวจสอบ URL
*  ------------------------------- */
$url = parse_url($url);
$host = $url[host];

if(!($ip = gethostbyname($host)))
{
  echo "โฮสต์ของ URL มี IP ไม่ถูกต้อง <br/>";
  exit;
}

echo "โฮสต์อยู่ที่ IP $ip <br/>";
/* -------------------------------
* ตรวจสอบ email address
*  ------------------------------- */
$email = explode("@", $email);
$emailhost = $email[1];

if (!getmxrr($emailhost, $mxhostsarr))
{
  echo "ที่อยู่อีเมล์มีโฮสต์ไม่ถูกต้อง";
  exit;
}

echo "อีเมล์ส่งผ่าน: ";
foreach ($mxhostsarr as $mx)
  echo "$mx ";
/* -------------------------------
* ถ้าถึงที่นี่ , รายละเอียดถูกต้อง
*  ------------------------------- */
echo <<<EOMSG
<p>รายละเอียดการส่งทั้งหมด ถูกต้อง <br>
ขอบคุณสำหรับการส่งผ่านไซต์ของท่าน <br>
จะมีการเยี่ยมจากเจ้าหน้าที่ของเราในเร็วๆนี้</p>
EOMSG;

?>
</body>
</html>

ส่วนน่าสนใจของสคริปต์นี้คือ

นำ URL และประยุกต์ด้วยฟังก์ชัน parse_url() ฟังก์ชันนี้ส่งออก array เชื่อมโยงกับส่วนต่างๆ ของ URL ชิ้นสารสนเทศมีให้ คือ scheme, user, pass, hast, port, path, query และ fragment ตามปกติไม่ต้องการสารสนเทศทั้งหมด
ให้ URL เช่น
http://someone:hello@mydomain.com:80/somebody.php?sender=2#anchor

ค่าของแต่ละส่วนของส่วนของ array จะเป็น

  1. scheme : http://
  2. user : someone
  3. pass : hello
  4. host : mydomain.com
  5. port : 80
  6. path : somebody.php
  7. query : sender=2
  8. fragment : anchor

ในสคริปต์นี้ต้องการเฉพาะสารสนเทศ host ดังนั้น จึง ดึงออกจาก array ดังนี้
$url = parse_url($url);
$host = $url[host];

หลังจากนั้นสามารถดึง IP address ของโฮสต์ ถ้าอยู่ใน DNS ด้วยฟังก์ชัน gethostbyname() ที่จะส่งออก IP  ถ้ามีอยู่จริงหรือ FALSE ถ้าไม่มีอยู่จริง
$ip = gethostbyname($host);

ในทางกลับกัน ใช้ฟังก์ชัน gethostbyaddr() ที่ใช้ IP เป็นพารามิเตอร์และส่งออกชื่อโฮสต์ ถ้าเรียกฟังก์ชันเหล่านี้สำเร็จอาจจะพบชื่อโฮสต์ต่างจากเริ่มต้น แสดงว่าโฮสต์นั้นใช้บริการโฮสต์เสมอ

ถ้า URL ถูกต้อง ต่อไปให้ตรวจสอบที่อยู่อีเมล์ ขั้นแรกแบ่งชื่อผู้ใช้และชื่อโฮสต์ด้วยการเรียกฟังก์ชัน explode()
$email = explode("@", $email);
$emailhost = $email[1];

เมื่อมีส่วนโฮสต์ของ address นั้น สามารถตรวจสอบ สถานที่สำหรับอีเมล์เดินทางด้วยการใช้ฟังก์ชัน  getmxrr()
getmxrr($emailhost, $mxhostsarr)

ฟังก์ชันนี้ส่งออกชุดของ MX (Mail Exchange) records สำหรับ address ใน array ที่ส่ง $mxhostsarr
หมายเหตุ    ฟังก์ชัน getmxrr() ไม่สนับสนุนการทำงานบน Windows ดังนั้นสคริปต์ตัวอย่างจึงได้อัพโหลดให้ทดสอบที่
http://www.widebase.net/lesson/php_lesson/site_verified/site_verified.html

 


  

สงวนลิขสิทธิ์ (C) widebase / Julaphak