下面是一段asp代码,是实现域名ajax的查询功能,其实最主要是getHTTPPage这个函数,我不知道在PHP是用什么函数实现的,代码想转成PHP代码,望熟悉的高手能指点一下,不甚感激!ASP代码:
<% 
On Error Resume Next 
Server.ScriptTimeOut=9999999 
Function getHTTPPage(jnkcUrl) 
Dim CJXMLHTTP 
Set CJXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP") 
CJXMLHTTP.Open "GET", jnkcUrl, False, "", "" 
CJXMLHTTP.Send 
getHTTPPage = CJXMLHTTP.ResponseText 
Set CJXMLHTTP = Nothing 
End Function 
%> 
<%
Response.CharSet = "GB2312"
response.write "<p style='height:30px;'><span class='rfont'>域名查询结果:</span></p>"
response.write "<ul class='domain-list2'>"types=split(request("checkbox"),",")
dns=trim(request("dns")) 
for i=0 to ubound(types) 
url="http://panda.www.net.cn/cgi-bin/check.cgi?area_domain="&dns&"."&trim(types(i))&" " 
wstr=getHTTPPage(url) 
if instr(wstr,"Domain name is not available")>0 then 
mes="已注册"
elseif instr(wstr,"Domain name is available")>0 then 
mes="未注册" 
else 
mes="网络延迟,请重新提交!" 
end if 
response.write "<li><span class='bfont'>"&dns& "."&trim(types(i))&"</span>&nbsp;&nbsp;<span class='rfont'>" & mes & "</span></li>" 
next 
response.write "</ul>"%>

解决方案 »

  1.   

    error_reporting(0);
    set_time_limit(0);
     
    Function getHTTPPage($jnkcUrl) 
    {$ch = curl_init($jnkcUrl); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,50);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $response=curl_exec($ch);
    curl_close($ch);} //Response.CharSet = "GB2312"echo iconv("UTF-8", "GB2312","<p style='height:30px;'><span class='rfont'>域名查询结果:</span></p>"); 
    echo iconv("UTF-8", "GB2312","<ul class='domain-list2'>");
    $types=explode(",",$_GET["checkbox"]);
    //$types=explode(",","com,cn,net");
    $dns=trim($_GET["dns"]); 
    //$dns="baidu"; foreach($types as $a)
    {
    $url="http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=$dns.".trim($a) ; 
    $wstr=getHTTPPage($url); 
    if (strpos($wstr,"Domain name is not available")>=0)
    $mes="已注册";
    elseif (strpos($wstr,"Domain name is available")>=0)
    $mes="未注册"; 
    else  
    $mes="网络延迟,请重新提交"; 
    echo iconv("UTF-8", "GB2312","<li><span class='bfont'>$dns.".trim($a)."</span>&nbsp;&nbsp;<span class='rfont'>$mes </span></li>"); 
    }  echo "</ul>";
    测试已经通过的,直接拿去用吧。
      

  2.   

    <?php?>把这个替换<% %>
      

  3.   

    error_reporting(0);
    set_time_limit(0);
     
    Function getHTTPPage($jnkcUrl) 
    {$ch = curl_init($jnkcUrl); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,50);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $response=curl_exec($ch);curl_close($ch);
    return $response;
    }
    //Response.CharSet = "GB2312"echo iconv("UTF-8", "GB2312","<p style='height:30px;'><span class='rfont'>域名查询结果:</span></p>"); 
    echo iconv("UTF-8", "GB2312","<ul class='domain-list2'>");
    $types=explode(",",$_GET["checkbox"]);
    //$types=explode(",","com,cn,net");
    $dns=trim($_GET["dns"]); 
    //$dns="baidu"; foreach($types as $a)
    {
    $url="http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=$dns.".trim($a) ; 
    $wstr=getHTTPPage($url); 
    if (strpos($wstr,"Domain name is not available")!=false)
    $mes="已注册";
    elseif (strpos($wstr,"Domain name is available")!=false)
    $mes="未注册"; 
    else  
    $mes="网络延迟,请重新提交"; 
    echo iconv("UTF-8", "GB2312","<li><span class='bfont'>$dns.".trim($a)."</span>&nbsp;&nbsp;<span class='rfont'>$mes </span></li>"); 
    }  echo "</ul>";
      

  4.   

    我试着运行这句:echo iconv("UTF-8", "GB2312","<p style='height:30px;'><span class='rfont'>域名查询结果:</span></p>"); 结果是显示不出来...
    但是只用echo是可以的,加上iconv这个函数转换字符就出错了.
    对了,我网站的编码是GB2312的,会不会跟这样冲突呢?
      

  5.   

    不要意思啊,我是直接复制给request的,所以没有发现两个地方的错误。
    一个是上面的函数忘了返回值了return $response;
    一个是strpos函数搜索字符串 当能搜索到的时候范围大于等于0的数字,搜索不到了就范围false。而false在if判断中也是大于零的,所以这个地方也改了一下
      

  6.   

    你这个网页要保存成utf-8的格式,不然会出现乱码,因为这一句echo iconv("UTF-8", "GB2312","<p style='height:30px;'><span class='rfont'>域名查询结果:</span></p>");  已经告诉iconv你这个页面的字符是UTF-8了,如果你把网页编码成gb2312,那么再用这个函数,等于将你网页上的字符按UTF-8读取,再转GB2312,要出现乱码的。
    要是非要保存成GB2312网页,就不要用这个函数直接echo "<p style='height:30px;'><span class='rfont'>域名查询结果:</span></p>";  
      

  7.   

    晕了,是不是我传送的问题,我试了一下只能读出一个域名的查询.我发下我全部的代码:Javascript:
    var xmlHttp
    function check_domain()

    var elements = document.getElementsByName("checkbox"); 
    var checkbox_str = ""; 
    for(var i=0;i<elements.length;i++){ 
    if(elements[i].checked){ 
    checkbox_str=checkbox_str +"&checkbox="+ elements[i].value;

    } //var url="check.asp?sid=" + Math.random() + "&dns="+ document.checkdomain.dns.value + "&checkbox="+ document.checkdomain.checkbox[0].value + "&checkbox="+ document.checkdomain.checkbox[1].value
    var url="/include/domain/check.php?sid=" + Math.random() + "&dns="+ document.checkdomain.dns.value + checkbox_strxmlHttp=GetXmlHttpObject(stateChanged)
    xmlHttp.open("GET", url , true)
    xmlHttp.send(null)
    document.getElementById("txtHint").innerHTML="<img src='/images/load.gif' alt='Loading Data' /><br/><span class='rfont'>请稍候,域名查询中..</span>";
    } function stateChanged() 

    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")

    document.getElementById("txtHint").innerHTML=xmlHttp.responseText;

    } function GetXmlHttpObject(handler)

    var objXmlHttp=nullif (navigator.userAgent.indexOf("Opera")>=0)
    {
    alert("This example doesn't work in Opera") 
    return; 
    }
    if (navigator.userAgent.indexOf("MSIE")>=0)

    var strName="Msxml2.XMLHTTP"if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
    {
    strName="Microsoft.XMLHTTP"

    try

    objXmlHttp=new ActiveXObject(strName)
    objXmlHttp.onreadystatechange=handler 
    return objXmlHttp

    catch(e)

    alert("Error. Scripting for ActiveX might be disabled") 
    return 


    if (navigator.userAgent.indexOf("Mozilla")>=0)
    {
    objXmlHttp=new XMLHttpRequest()
    objXmlHttp.onload=handler
    objXmlHttp.onerror=handler 
    return objXmlHttp
    }

    HTML代码:
    <form name="checkdomain" method="post" action="/include/domain/check.php" onkeydown="if(event.keyCode==13){return false;}" > 
    <div class="domain-title">
    <span class="domain-www">www.</span>
    <input name="dns" type="text" class="domain-input" id="dns"  /> 
    <input type="button" class="button1" name="submit" value="" id="submit"  onclick="javascript:return check_domain();"  />
    </div>
    <ul class="domain-list1">
    <li><input type="checkbox" name="checkbox" value="com" checked="checked" />.com</li>
    <li><input type="checkbox" name="checkbox" value="net" checked="checked" />.net</li>
    <li><input type="checkbox" name="checkbox" value="org" checked="checked" />.org</li>
    <li><input type="checkbox" name="checkbox" value="cc" checked="checked" />.cc</li>
    <li><input type="checkbox" name="checkbox" value="info" />.info</li>
    <li><input type="checkbox" name="checkbox" value="biz" />.biz</li>
    <li><input type="checkbox" name="checkbox" value="name" />.name</li>
    <li><input type="checkbox" name="checkbox" value="mobi" />.mobi</li>
    <li><input type="checkbox" name="checkbox" value="cn" checked="checked" />.cn</li>
    <li><input type="checkbox" name="checkbox" value="com.cn" checked="checked" />.com.cn</li>
    <li><input type="checkbox" name="checkbox" value="net.cn" />.net.cn</li>
    <li><input type="checkbox" name="checkbox" value="org.cn" />.org.cn</li>
    </ul>
    </form>
      

  8.   

    js只是负责传递给check.php并处理返回结果,应该没关系的才对.
      

  9.   

    你用post传的啊?把$_GET全部替换成$_POST试试吧
      

  10.   

    oqqen1234,真的很谢谢您.
    我都有点不好意思了...我试了一下,还是不行,我html换成get或者post的,结果都有一样,只显示第一条纪录..
      

  11.   

    想知道为什么吗?
    <input type="checkbox" name="checkbox" value="com" checked="checked" />
    你所有的input的name属性值都是checkbox,能得到其他的记录才怪啊。
      

  12.   

    是啊,我检测了一下,也是空的.
    但我之前用asp也是可以读出来的.
      

  13.   

    我在js里把它分开出来并传送过去:
    function check_domain()

    var elements = document.getElementsByName("checkbox"); 
    var checkbox_str = ""; 
    for(var i=0;i<elements.length;i++){ 
    if(elements[i].checked){ 
    checkbox_str=checkbox_str +"&checkbox="+ elements[i].value;

    } var url="/include/domain/check.php?sid=" + Math.random() + "&dns="+ document.checkdomain.dns.value + checkbox_str但在php中这样的数组就没了,晕了...
      

  14.   

    把<li><input type="checkbox" name="checkbox" value="com" checked="checked" />.com</li>
    <li><input type="checkbox" name="checkbox" value="net" checked="checked" />.net</li>
    <li><input type="checkbox" name="checkbox" value="org" checked="checked" />.org</li>
    <li><input type="checkbox" name="checkbox" value="cc" checked="checked" />.cc</li>
    <li><input type="checkbox" name="checkbox" value="info" />.info</li>
    <li><input type="checkbox" name="checkbox" value="biz" />.biz</li>
    <li><input type="checkbox" name="checkbox" value="name" />.name</li>
    <li><input type="checkbox" name="checkbox" value="mobi" />.mobi</li>
    <li><input type="checkbox" name="checkbox" value="cn" checked="checked" />.cn</li>
    <li><input type="checkbox" name="checkbox" value="com.cn" checked="checked" />.com.cn</li>
    <li><input type="checkbox" name="checkbox" value="net.cn" />.net.cn</li>
    <li><input type="checkbox" name="checkbox" value="org.cn" />.org.cn</li>
    里面的name值全换为checkbox1、checkbox2、checkbox3、、、、、
      

  15.   

    oqqen1234,真的很谢谢您.
    谢谢您啦....
    我搞定了.
    顺便我也说一下我的方法,数组我仍是按照原先的checkbox传送,因为一个名字一个名字命名,感觉太杂了.
    然后在js里我加了这样的判断,然后再将字符合串传送给check.php处理就行了:
    [code=JScript]function check_domain()

    var elements = document.getElementsByName("checkbox"); 
    var checkbox_str = ""; 
    for(var i=0;i<elements.length;i++){ 
    if(elements[i].checked){ 
    checkbox_str=checkbox_str + elements[i].value+",";

    } 至于在前台显示的乱码主要是没加了:
    header("content-type:text/html; charset=utf-8");对PHP不是很熟悉,走了不少弯路...   ^_^再次感谢您的帮助!
      

  16.   

    不要那么客气,一起学习嘛!
    你只显示一个的原因是你全部用了checkbox做参数名传递过去了,所以只得到一个checkbox的值。你上面的是通过“,”分割不用checkbox就好了,刚好被我的explode劈中。