hi guys,

I found a simple whois script and intregrated it completely into my site before testing it on IE (oooops!) and it only works on firefox and safari. On IE the result text that should be written as a result of the below section of the code:

if (eregi('No match',$result)) {
echo 'Domain Name '.$_POST['domain'].' is free.';

dosnt show up... the script im using is below.

<?
if ($_POST['type']!="") define('TYPE', $_POST['type']); else define('TYPE', '');
if ($_POST['domain']!="") define('DOMAIN', $_POST['domain']); else define('DOMAIN', '');
// .com domains
define('COM_SERVER', "rs.internic.net"); // server to lookup for domain name
define('COM_NOMATCH', "No match"); // string returned by server if the domain is not found
define('COM_INCLUDE', true); // include this domain in lookup

function search_form($error){
echo $error;
?>
<form name="whois" method="post" action="">
  <input name="domain" style="text-align:center" type="text" id="domain"  value="Choose your domain!" />
<input name="Search" type="submit" id="Search" value="Go!">
</form>
  <?
}

if($_REQUEST['Search']){

if($error){
search_form($error);
}
else{

$ns = fsockopen('rs.internic.net',43);
fputs($ns, $_POST['domain']."\r\n");
$result = '';

while(!feof($ns)) $result .= fgets($ns,128);
fclose($ns);
if (eregi('No match',$result)) {
echo 'Domain Name '.$_POST['domain'].' is free.';
}
else {
echo 'Domain Name '.$_POST['domain'].' is not available.';
}
}
}
else{
search_form($error);
}

?>

Any ideas why not?

Thanks for the help,

Max

ah well i took out all of the irelavent information before posting it - for example at the moment if the whois dosnt find anything for a domain it will write a paypal add to basket button so i took all that out and in the process might have killed it a bit :P

here is an example of where the script is working:
http://www.economizerz.com/daniweb/whoisscriptexample.php

the full script im currently using is:

<?
if ($_POST['type']!="") define('TYPE', $_POST['type']); else define('TYPE', '');
if ($_POST['domain']!="") define('DOMAIN', $_POST['domain']); else define('DOMAIN', '');
// .com domains
define('COM_SERVER', "rs.internic.net"); // server to lookup for domain name
define('COM_NOMATCH', "No match"); // string returned by server if the domain is not found
define('COM_INCLUDE', true); // include this domain in lookup

function search_form($error){
echo $error;
?>
<center><form name="whois" method="post" action="">
  <input name="domain" style="text-align:center" type="text" id="domain"  value="Choose your domain!" onclick="clearwhois();" onblur="returnwhois()" />
<input name="Search" type="submit" id="Search" value="Go!">
</form></center>
  <?
}

if($_REQUEST['Search']){

if($error){
search_form($error);
}
else{

$ns = fsockopen('rs.internic.net',43);
fputs($ns, $_POST['domain']."\r\n");
$result = '';

$suffix = strstr($_POST['domain'], '.');
if ($suffix == '.co.uk') $suffixprice = '3';
if ($suffix == '.com') $suffixprice = '5';
if ($suffix == '.net') $suffixprice = '8';

while(!feof($ns)) $result .= fgets($ns,128);
fclose($ns);
if (eregi('No match',$result)) {
echo '<center><form name="whois" method="post" action="">
  <input name="domain" style="text-align:center" type="text" id="domain"  value="Choose your domain!" onclick="clearwhois();" onblur="returnwhois()" />
<input name="Search" type="submit" id="Search" value="Go!">
</form>

<table border="0" cellpadding="0" cellspacing="3"><tr><th align="center" valign="middle" scope="col"><img src="../../images/other/tick.png"></tr><th align="center" valign="middle" scope="col">Domain Name '.$_POST['domain'].' is free.</tr></table><br /></form>
<form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="submit" value="Add to basket!">
<input type="hidden" name="add" value="1">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="business" value="example@email.com">
<input type="hidden" name="item_name" value="'.$_POST['domain'].'">
<input type="hidden" name="amount" value="'.$suffixprice.'">
<input type="hidden" name="item_number" value="">
<input type="hidden" name="no_shipping" value="0">
<input type="hidden" name="no_note" value="1">
<input type="hidden" name="currency_code" value="GBP">
<input type="hidden" name="lc" value="GB">
<input type="hidden" name="bn" value="PP-ShopCartBF">
</form>
</center>
';
}
else {
echo '<center><form name="whois" method="post" action="">
  <input name="domain" style="text-align:center" type="text" id="domain"  value="Choose your domain!" onclick="clearwhois();" onblur="returnwhois()" />
<input name="Search" type="submit" id="Search" value="Go!">
</form>

<table border="0" cellpadding="0" cellspacing="3"><tr><th align="center" valign="middle" scope="col"><img src="../../images/other/cross.png"></tr><th align="center" valign="middle" scope="col">Domain Name '.$_POST['domain'].' is not available.</tr></table><br /></form></center>';
}
}
}
else{
search_form($error);
}

?>

Max

Ah thanks for the new script. Im testing it all out but I do have one problem which is that I cant integrate a .co.uk domain suffix into it.

this is an example of the code used to check the .com suffix:

$this->serverList[0]['top']      = 'com';
	$this->serverList[0]['server']   = 'whois.crsnic.net';
	$this->serverList[0]['response'] = 'No match for';
	$this->serverList[0]['check']    = true;

and this is what i wrote (at the end of the suffix list) to try and get .co.uk working

$this->serverList[9]['top']      = 'co.uk';
	$this->serverList[9]['server']   = 'whois.nic.uk';
	$this->serverList[9]['response'] = 'No match for';
	$this->serverList[9]['check']    = false;

iv tried quite a few different servers and none of them work however i think the problem its the .uk section of it (presumerably the ".") because when I put .uk it works normally but obviously dosnt find a proper result. do you have any idea how to fix it? I think it might be more complicated than just adding my .co.uk section but i cant find any support from any of the websites holding the script or any other forums.

Thanks
(youv been helping me with web designing for AAAAGES now!! its MUCH appreciated :D)

Max

Argh! You are right. Php doesn't like . in the names of form elements. It replaces . by _.

<?php
print_r($_POST);
?>
<html>
<body>
<form method="post">
<input type="text" name="some.name">
<input type="submit" name="submit.1" value="submit">
</form>
</body>
</html>

Hmm.. strange! Lets see if someone else has an idea !

Since "_" is an invalid character for a domain, does that mean that you will never have an underscore in the any of the form entity names?

if so, you could try this

foreach($_POST as $key=>$value)
{
	$_POST[str_replace("_", ".", $key)] = $value;
}
print_r($_POST);
echo "<br />" . $_POST['.co.uk'];

it does work.

Thanks r0bb0b and nav33n however im not quite sure what to do with the code.

presumerably i put it at the beginning of the php script to make sure that it changes all strings with an underscore to have full stops instead however im not sure what $key or $value are meant to be.

I have a domain name field called "domain" and checkboxes for domain suffixes to be checked called "top_". its the domain field where the underscores need to be changed to fullstops

thanks again

You know that there are two parts to an array cell(or what ever you want to call it) right?
array[0] = "red";
echo array[0] and get "red";

0 is the key.
"red" is the value.

so, you can do a foreach loop with just he value like this

foreach($array as $value)
{
    $value = "red";
}

or with key and value

foreach($array as $key=>$value)
{
    $key = 0;
    $value = "red";
}

Maybe that will help, ya?
You can stick it at the very top of the script and it will replace all "_" with "." in the $_POST names.

Ahhh okay I see so it finds any array's where co_uk is written and converts it to co.uk

- i got a parse error:

Parse error: syntax error, unexpected T_FOREACH, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/sites/economizerz.com/public_html/test/maxwhois/maxWhois.class.php on line 8
<?php

class maxWhois{

    var $serverList;
    var $tr = 0;
	
foreach($_POST as 9 = 'co_uk')
{
	$_POST[str_replace("_", ".", $key)] = $value;
}
print_r($_POST);

echo "<br />" . $_POST['.co.uk'];

possibly my server is using an old version of php or something?

(if the script is meant to be:

foreach($_POST as $key=>$value)
{
	$_POST[str_replace("_", ".", $key)] = $value;
}
print_r($_POST);
echo "<br />" . $_POST['.co.uk'];

i have tried that too)

dont worry I have fixed that now but it is still not working. (http://economizerz.com/index.php)
this is the code for the .co.uk suffix i am using

$this->serverList[9]['top']      = 'co.uk';
	$this->serverList[9]['server']   = 'whois.nic.uk';
	$this->serverList[9]['response'] = 'No match for';
	$this->serverList[9]['check']    = false;

(sorry for the 2 previous posts - the delete post button is not there! lol)

This article has been dead for over six months. Start a new discussion instead.