Jump to content

Search the Community

Showing results for tags 'php mx dns'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Welcome to PHP Freaks
    • Announcements
    • Introductions
  • PHP Coding
    • PHP Coding Help
    • Regex Help
    • Third Party Scripts
    • FAQ/Code Snippet Repository
  • SQL / Database
    • MySQL Help
    • PostgreSQL
    • Microsoft SQL - MSSQL
    • Other RDBMS and SQL dialects
  • Client Side
    • HTML Help
    • CSS Help
    • Javascript Help
    • Other
  • Applications and Frameworks
    • Applications
    • Frameworks
    • Other Libraries
  • Web Server Administration
    • PHP Installation and Configuration
    • Linux
    • Apache HTTP Server
    • Microsoft IIS
    • Other Web Server Software
  • Other
    • Application Design
    • Other Programming Languages
    • Editor Help (PhpStorm, VS Code, etc)
    • Website Critique
    • Beta Test Your Stuff!
  • Freelance, Contracts, Employment, etc.
    • Services Offered
    • Job Offerings
  • General Discussion
    • PHPFreaks.com Website Feedback
    • Miscellaneous

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests


Age


Donation Link

Found 1 result

  1. Hi I have an old php4 box that I'm trying to make some use of. I don't have nslookup, php getmxrr etc. I found on the php.net site a function to return the MX records for a domain. In this example I'm using gmail, but I get different results compared to getmxrr(). getmxrr shows: Array ( [0] => alt1.gmail-smtp-in.l.google.com [1] => alt3.gmail-smtp-in.l.google.com [2] => alt2.gmail-smtp-in.l.google.com [3] => gmail-smtp-in.l.google.com [4] => alt4.gmail-smtp-in.l.google.com ) yet this function returns: Array ( [0] => google.com [1] => alt3.google.com [2] => alt4.google.com [3] => alt2.google.com [4] => alt2.google.com.google.com ) The code below shows how I've called getmxrr and the function, can anyone advise if it's possible to get the results to match getmxrr ?? It's querying the same server on port 53. <?php getmxrr ( "gmail.com", $mxhosts); echo "<pre>"; print_r($mxhosts); echo "</pre>"; class mxlookup { var $dns_socket = NULL; var $QNAME = ""; var $dns_packet= NULL; var $ANCOUNT = 0; var $cIx = 0; var $dns_repl_domain; var $arrMX = array(); function mxlookup($domain, $dns="8.8.8.8") { $this->QNAME($domain); $this->pack_dns_packet(); $dns_socket = fsockopen("udp://$dns", 53); fwrite($dns_socket,$this->dns_packet,strlen($this->dns_packet)); $this->dns_reply = fread($dns_socket,1); $bytes = stream_get_meta_data($dns_socket); $this->dns_reply .= fread($dns_socket,$bytes['unread_bytes']); fclose($dns_socket); $this->cIx=6; $this->ANCOUNT = $this->gord(2); $this->cIx+=4; $this->parse_data($this->dns_repl_domain); $this->cIx+=7; for($ic=1;$ic<=$this->ANCOUNT;$ic++) { $QTYPE = ord($this->gdi($this->cIx)); if($QTYPE!==15){print("[MX Record not returned]"); die();} $this->cIx+=9; $mxPref = ord($this->gdi($this->cIx)); $this->parse_data($curmx); $this->arrMX[] = $curmx; $this->cIx+=3; } } function parse_data(&$retval) { $arName = array(); $byte = ord($this->gdi($this->cIx)); while($byte!==0) { if($byte==192) //compressed { $tmpIx = $this->cIx; $this->cIx = ord($this->gdi($cIx)); $tmpName = $retval; $this->parse_data($tmpName); $retval=$retval.".".$tmpName; $this->cIx = $tmpIx+1; return; } $retval=""; $bCount = $byte; for($b=0;$b<$bCount;$b++) { $retval .= $this->gdi($this->cIx); } $arName[]=$retval; $byte = ord($this->gdi($this->cIx)); } $retval=join(".",$arName); } function gdi(&$cIx,$bytes=1) { $this->cIx++; return(substr($this->dns_reply, $this->cIx-1, $bytes)); } function QNAME($domain) { $dot_pos = 0; $temp = ""; while($dot_pos=strpos($domain,".")) { $temp = substr($domain,0,$dot_pos); $domain = substr($domain,$dot_pos+1); $this->QNAME .= chr(strlen($temp)).$temp; } $this->QNAME .= chr(strlen($domain)).$domain.chr(0); } function gord($ln=1) { $reply=""; for($i=0;$i<$ln;$i++){ $reply.=ord(substr($this->dns_reply,$this->cIx,1)); $this->cIx++; } return $reply; } function pack_dns_packet() { $this->dns_packet = chr(0).chr(1). chr(1).chr(0). chr(0).chr(1). chr(0).chr(0). chr(0).chr(0). chr(0).chr(0). $this->QNAME. chr(0).chr(15). chr(0).chr(1); } } /* Exampe of use: */ $mx = new mxlookup("gmail.com"); echo "<pre>"; print_r($mx->arrMX); echo "</pre>"; ?> adding a var_dump to the gdi function is showing the correct DNS entries, so it's something to do with how the script is joining the results back together. function gdi(&$cIx,$bytes=1) { $this->cIx++; var_dump(substr($this->dns_reply, $this->cIx-1, $bytes)); return(substr($this->dns_reply, $this->cIx-1, $bytes)); } anyone any ideas ? Thanks Thanks
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.