เว็บโฮสติ้ง Pinkkeyhost :: Support Center

Member Center => PHP & Opensource => ข้อความที่เริ่มโดย: bunpot ที่ 12 ต.ค. 2006 04:02



หัวข้อ: โค้ด whois ที่ใช้อยู่เอามาใช้กับโฮสของคุณแมนไม่ได้น่ะครับ
เริ่มหัวข้อโดย: bunpot ที่ 12 ต.ค. 2006 04:02
 :-[ แย่เลย สงสัย php คนละเวอร์ชั่นกัน

เช็คมาแล้ว เดิมที่ใช้อยู่เป็นเวอร์ชั่น 4.4.2  ของโฮสคุณแมน 4.4.4   
แบบนี้จะแก้ไงให้กลับมาใช้ได้ล่ะครับเนี่ย ???


หัวข้อ: Re: โค้ด whois ที่ใช้อยู่เอามาใช้กับโฮสของคุณแมนไม่ได้น่ะครับ
เริ่มหัวข้อโดย: PinkkeyHost ที่ 12 ต.ค. 2006 12:14
ไม่น่าเป็นที่เวอร์ชั่น php ครับ
ปัญหาหลักเกี่ยวกับการใช้งาน php ให้สัณนิษฐานไว้ก่อนเลยว่าเป็นที่ register_globals ครับ
เนื่องจากทางโฮสตั้งค่าไว้ที่ off สำหรับทุก user และตั้งให้เป็น on เฉพาะ user ที่จำเป็นต้องใช้
เพื่อความปลอดภัยของระบบโดยรวมครับ

ยังไงลองส่ง code มาให้ช่วยดูหรือลองแก้ไขเองตาม http://support.pinkkeyhost.com/index.php?topic=15.0
หากไม่ได้ส่งเมล์แจ้ง username มาให้ทางเราเปิด register_global ให้ได้เลยครับ


หัวข้อ: Re: โค้ด whois ที่ใช้อยู่เอามาใช้กับโฮสของคุณแมนไม่ได้น่ะครับ
เริ่มหัวข้อโดย: bunpot ที่ 12 ต.ค. 2006 15:42
แก้ตามนั้นแล้ว ทดลองในเครื่องที่บ้านก็ใช้ได้ แต่พออัพโหลดแล้วทดลองดูเป็นแบบนี้ครับ

Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: hostname nor servname provided, or not known in /home/gptoin/domains/gptoin.com/public_html/home/whois.php on line 31

Warning: fsockopen() [function.fsockopen]: unable to connect to whois.internic.net:43 in /home/gptoin/domains/gptoin.com/public_html/home/whois.php on line 31
Error: ติดต่อฐานข้อมูลโดเมนไม่ได้!*&@!

ผมไม่เก่ง php ซะด้วย  ???

ก่อนที่จะแทรกโคดมันแสดงเป็นหน้าขาวๆ ครับ แต่หลังแทรกโคดแล้วมันก็เป็นแบบที่เห็นแหละครับ
ไม่ทราบว่าต้องแก้โคดตรงไหนอีกหรือเปล่าครับ

นี่คือโค้ดที่ผมใช้อยู่ครับ
โค๊ด:
<?php

$globals_test 
= @ini_get('register_globals');
if ( isset(
$globals_test) && empty($globals_test) ) {
$types_to_register = array('GET''POST''COOKIE''SESSION''SERVER');
foreach (
$types_to_register as $type) {
$arr = @${'_' $type};
if (@
count($arr) > 0)
extract($arrEXTR_SKIP);
}
}


$port='43';
if (empty(
$domain)) { 
die;
}

if ( (
eregi("com"$tld )) || (eregi("net"$tld )) || (eregi("org"$tld )) ||
 (eregi("cc"$tld )) || (eregi("biz"$tld ))  ) {
$server='whois.internic.net';
} else if ( 
eregi("th"$tld ) ) {
$server='whois.thnic.net';
}

$domain$domain.$tld;
echo 
"<b>กำลังเชื่อมต่อ server ...</b>";

$sock fsockopen ($server$port); 
if (!
$sock) {
echo "Error: ติดต่อฐานข้อมูลโดเมนไม่ได้!*&@!";
}
else {
  echo 
" Server Ok..<br>";


   
fputs ($sock"$domain\r\n"); #HELO ได้นะ
  
echo "เช็ค: <b>$domain</b><br>";
 
while(!
feof($sock)) {
    
$reply .= fgets ($sock1024); 
}

$reply=nl2br($reply);

   if ( (
eregi("No match",$reply)) || (eregi("No entries",$reply)) ) {
   echo ("<font color=#339900>Available/ ว้าว! ยินดีด้วย  $domain ยังว่างอยู่!!จดได้เลยจ้า&nbsp;&nbsp;</font>");
include(
"whoistemplate02.php");
   } else {
   echo ("<font color=#FF0033>has been registered/มีเจ้าของแล้วจ้า !!</font>");
   echo "<p>$reply";
   } 
  }

?>


รบกวนหน่อยครับ
ขอบคุณครับ


หัวข้อ: Re: โค้ด whois ที่ใช้อยู่เอามาใช้กับโฮสของคุณแมนไม่ได้น่ะครับ
เริ่มหัวข้อโดย: bunpot ที่ 13 ต.ค. 2006 01:39
ปวดหัวแหะ...

ถ้าไม่ได้ยังไงเดี๋ยวหาโค้ดตัวใหม่มาใช้ แต่ยังไงช่วยดูปัญหาของโค้ดตัวนี้ด้วยนะครับ

ผมว่ามันไม่น่าเกี่ยวกับ register_globals  เพราะแทรกโค้ดลองในเครื่องที่บ้าน ก็ปกติดีครับ


หัวข้อ: Re: โค้ด whois ที่ใช้อยู่เอามาใช้กับโฮสของคุณแมนไม่ได้น่ะครับ
เริ่มหัวข้อโดย: PinkkeyHost ที่ 13 ต.ค. 2006 12:38
1. code เดิมไม่รองรับ register_global=off การแก้ไขโดยเพิ่ม code ด้านบนถูกต้องแล้วครับ
2. จาก error มันหา ip ไม่เจอครับ ตรงนี้ไม่เกี่ยวกับ register_global แล้วครับ เดี๋ยวยังไงจะรีบตรวจสอบและแจ้งผลให้ทราบครับ

ต้องขออภัยในความไม่สะดวกมา ณ ที้นี้


หัวข้อ: Re: โค้ด whois ที่ใช้อยู่เอามาใช้กับโฮสของคุณแมนไม่ได้น่ะครับ
เริ่มหัวข้อโดย: PinkkeyHost ที่ 13 ต.ค. 2006 13:16
เนื่องจากผมได้ปิด recursive dns ไว้
คือ dns จะ response เฉพาะ domain ที่มีอยู่ภายใน database ของเครื่องเท่านั้น เพื่อป้องกัน โดน DNS DOS
ส่วนการใช้งานโดยทั่วไป ตัวระบบจะสามารถหา ip ของเครื่องที่ต้องการติดได้ได้จาก dns ของทาง isp อยู่แล้ว

แต่การใช้งานผ่าน php นั้นมันไปหาจาก local dns เพียงอย่างเดียว จึงทำให้ไม่สามารถได้ ip ของ internic มา จึงเกิดปัญหาขึ้น
ตอนนี้ผมได้เปิด recursive dns ให้ใช้งานเหมือนเดิมแล้ว
ซึ่งจะพยายามหาทาง config ให้ dns recursive เฉพาะการร้องขอจาก localhost เท่านั้น

ยังไงลองทดสอบการใช้งานดูอีกทีครับ ตอนนี้น่าจะใช้งานได้แล้ว  :D


หัวข้อ: Re: โค้ด whois ที่ใช้อยู่เอามาใช้กับโฮสของคุณแมนไม่ได้น่ะครับ
เริ่มหัวข้อโดย: bunpot ที่ 13 ต.ค. 2006 18:46
ขอบคุณมากครับ ตอนนี้ใช้งานได้แล้วครับ  ;D


หัวข้อ: Re: โค้ด whois ที่ใช้อยู่เอามาใช้กับโฮสของคุณแมนไม่ได้น่ะครับ
เริ่มหัวข้อโดย: PinkkeyHost ที่ 14 ม.ค. 2008 18:03
เนื่องจากผมได้ปิด recursive dns ไว้
คือ dns จะ response เฉพาะ domain ที่มีอยู่ภายใน database ของเครื่องเท่านั้น เพื่อป้องกัน โดน DNS DOS
ส่วนการใช้งานโดยทั่วไป ตัวระบบจะสามารถหา ip ของเครื่องที่ต้องการติดได้ได้จาก dns ของทาง isp อยู่แล้ว

แต่การใช้งานผ่าน php นั้นมันไปหาจาก local dns เพียงอย่างเดียว จึงทำให้ไม่สามารถได้ ip ของ internic มา จึงเกิดปัญหาขึ้น
ตอนนี้ผมได้เปิด recursive dns ให้ใช้งานเหมือนเดิมแล้ว
ซึ่งจะพยายามหาทาง config ให้ dns recursive เฉพาะการร้องขอจาก localhost เท่านั้น

ยังไงลองทดสอบการใช้งานดูอีกทีครับ ตอนนี้น่าจะใช้งานได้แล้ว  :D


เพิ่มเติม
หลังจากเปิด recursive dns ไปไม่นาน
ทางโฮสได้ปรับ config ของ dns ใหม่ให้ recuesive ได้เฉพาะ localhost เพื่อความปลอดภัยของระบบเรียบร้อยแล้วครับ
หากเป็น request จากภายนอก server ก็จะ response เฉพาะโดเมนที่อยู่ใน server เท่านั้น เพื่อป้องกันการโดนโจมตี DNS FLOOD