感谢关注!
我当然知道AJAX不能跨域。所以我用服务器去访问而不是客户端。
完全使用ASP的代码我已经完成了,可以跨域。只是希望能够用PHP实现同样的功能。

解决方案 »

  1.   

    我贴出我现在用ASP写的全部代码。核心代码只有4行。
    /***开始***/
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Check Validate Code By WFSVI service</title>
    </head>
    <body><%
    Function CheckAJAX(praURL)
    Dim myXMLHttpObj
    Set myXMLHttpObj = Server.CreateObject("Msxml2.XMLHTTP.5.0")myXMLHttpObj.open "GET",praURL,false
    myXMLHttpObj.sendCheckVCByAJAX = myXMLHttpObj.responseBodySet myXMLHttpObj = Nothing
    End functionIf Request.Form("MyCode") <>"" Then
    Session("Result") = CheckAJAX("http://www.AAAAA.com/Check.asp?TimeStamp=" & Timer & _
    "&ID=" & Request.Form("myID") & _
    "&Code=" & Request.Form("myCode"))
    End If
    %><p>这是HTML代码。URL返回结果是:<%=Session("Result")%></p><%
    If Session("Result") = "1" Then
    Response.Write("<p>是1</p>")
    Else
    Response.Write("<p>不是1</p>")
    End If
    %></body>
    </html>
    /***结束***/其中,假设www.AAAAA.com是我的网站,我用ASP写了一个网页 Check.asp,需要带入2个参数:ID和Code。这个网页提供了一个服务,咱们姑且不需要知道是什么服务,这样会使问题复杂化。只需要知道,通过带入的2个参数经过处理,最终Check.asp返回的结果只是字符串“1”或“0”。“1”代表成功。另外一个网站,假设是www.BBBBB.com,是别人的网站。这个网站可能是asp.net,也可能是PHP或JSP。
    这个网站的访问者打开一个动态网页,输入表单中名称是MyID和MyCode的文本框,提交到他的服务器(也就是www.BBBBB.com。会有人问为什么吗?请再看看上两行字。)。提交到www.BBBBB.com服务器的动态网页在他自己的服务器端访问我的 www.AAAAA.com/Check.asp,带入三个参数:第一个是时间戳,单位是毫秒,保证每次访问都不重复,不使用缓存。第二个和第三个是表单中名称是MyID和MyCode文本框的内容。在www.BBBBB.com访问了我的ASP之后,我需要它能将Check.asp返回的结果存入它自己的Seesion变量中。这样它就可以知道自己的每个访问者执行了我的服务之后的结果。这是我琢磨出来的Seesion跨域共享的方法。在两个都是ASP写的网站中已经可以成功“共享”Session。
    但是我需要其他的动态语言编写的www.BBBBB.com也能使用这个方法。所以来此请教。(我在其他版也发了同样的帖子。有人抱怨50分太少。这是我给最多分的一次了,不过我可以加分)
      

  2.   

    JSP版有一位热心的朋友帮我解决了用JSP访问ASP的代码。
    分数可能不多,我送给他80分。
    是不是PHP不能实现?
    难道PHP还是这么落后吗?
      

  3.   

    本帖也加分加到80。
    唉,可能加到800也没用,PHP搞不好没有这个能力访问其他网站返回结果。
      

  4.   

    php为什么不可以?连这么简单的问题都不行的话,还有这么多人会用php吗?
      

  5.   

    我是楼主。
    我不知道PHP是否easy,因为我不懂PHP。5年前倒是学过,后来都忘光了。
    所以来PHP版请教。我可不是来踢馆的。
      

  6.   

    你的需求我地没仔细看,抓取网页内容方法不少。
    1.file_get_contents
    2.fopen
    3.fsockopen
    以下是fsockopen简单示例.
    ---------------------------------------------------------------
    function checkAjax($url)
    {
    $urls = parse_url($url);
    /*values assign*/
    $host = $urls['host'];
    $path = $urls['path'];
    $port = $urls['port'] ? $urls['port'] : 80;
    $qstr = $urls['query'];

    $fp = fsockopen($host,$port,$errno,$errstr,30);
    if(!$fp)
    {
    echo $errno.'-->'.$errstr.'<br>';
    }
    else 
    {
        $header.= "GET ".$path."?".$qstr." HTTP/1.1\r\n";
        $header.= "Host: ".$host."\r\n";
        $header.= "Connection: Close\r\n\r\n";
        
        fwrite($fp,$header);
        
        while(!feof($fp))
        {
         $rs .= fgets($fp);
        }
    }
    return $rs;
    }
    echo checkAjax('http://community.csdn.net/Expert/TopicView3.asp?id=5659671');
      

  7.   

    写个最短的抓页面的
    echo file_get_contents('http://.............');
      

  8.   


    看到PHP就如看到美元$$$$$呵呵~能想出这种写发的人肯定缺钱"GET ".$path."?"   捡美元路径在哪里?
    "Host: ".$host."?"     捡美元从哪个门进入
    return $            美元已经捡到返回
    :P
      

  9.   

    各位看看其他版中我的同样问题吧。ASP.net和JSP的我确认了代码之后马上揭帖。
    ASP.net:  http://community.csdn.net/Expert/topic/5659/5659735.xml?temp=.2207758
    JSP:      http://community.csdn.net/Expert/topic/5659/5659661.xml?temp=.8381922哪位能够帮忙给出完整的代码?我不熟悉PHP。另外,请勿灌水!
      

  10.   

    Socket吧,我觉得这个应该可以帮助你搞定这个问题!
      

  11.   

    能给出完整的代码吗?
    你的这个回复相当于告诉我用电脑就可以。因为我不懂PHP。
      

  12.   

    Mydscn() 你错了
    "GET ".$path."?"   投资美元来买路
    "Host: ".$host."?"     投资美元来买房子
    return $            你一共赚了多少美元
    =============================================
    我本机不能运行asp,所以下面的程序是用经验来写的(没有测试)
    <?
    $url = "http://xxx.xxx.xxx/xxx.asp?x=x&x=x&x=x";
    $arr= file($url);
    foreach($arr as $v){
       echo $v;
    }
    ?>
    这是最最最简单的php读取了
    <% Session("Result") = CheckAJAX ....%>
    你的AJAX是服务端代码处理(非js)我认为这样就可以了
    php 什么页面读不出来,就算是asp.net 的 __doPostBack 自动回送也能读
    fsockopen,Socket4,Socket5
    get方式,post方式 
    防浏览器工作而以
      

  13.   

    跨域时 要用 Referer
    GET $Url HTTP/1.1\r\n
    User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1)\r\n
    Referer: $Referer\r\n
    Accept: text/xml,application/xml,application/xhtml+xml,
    text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,
    image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1\r\n
    Accept-Language: en-us, en;q=0.50\r\n
    Accept-Encoding: gzip, deflate, compress;q=0.9\r\n
    Connection: Close\r\n\r\n如果不懂就用 Snoopy.class.php 类(不过此类不能读asp.net的__doPostBack 自动回送)
      

  14.   

    很抱歉,以上虽然有热心的朋友贴出了很多代码,但这样的代码,我不能给分。
    因为我不懂PHP。这些代码无疑等于“用电脑就可以”之类的答案。能否贴出像
    ASP.net:  http://community.csdn.net/Expert/topic/5659/5659735.xml?temp=.2207758
    JSP:      http://community.csdn.net/Expert/topic/5659/5659661.xml?temp=.8381922
    一样的代码?
    请写出详细的注释。你也不需要懂asp,只要用php访问一个网址,带入参数,得到返回的内容即可。
      

  15.   

    80分太少吗?
    再加20分。我不懂PHP,但是熟悉PHP的通过上面回贴的提示一定可以弄出来。
    我需要像
    ASP.net:  http://community.csdn.net/Expert/topic/5659/5659735.xml?temp=.2207758
    JSP:      http://community.csdn.net/Expert/topic/5659/5659661.xml?temp=.8381922
    一样的代码。PHP语句,每句都要注释。
      

  16.   

    我知道PHP肯定可以做到,所以又加了20分。
    我还知道几乎所有的动态网页语言都可以做到。
      

  17.   

    <?php
    $fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
    if (!$fp) {
        echo "$errstr ($errno)<br />\n";
    } else {
        $out = "GET / HTTP/1.1\r\n";
        $out .= "Host: www.example.com\r\n";
        $out .= "Connection: Close\r\n\r\n";    fwrite($fp, $out);
        while (!feof($fp)) {
            echo fgets($fp, 128);
        }
        fclose($fp);
    }
    ?> 这个是php手册中的例子,
        $out = "GET / HTTP/1.1\r\n";
        $out .= "Host: www.example.com\r\n";
        $out .= "Connection: Close\r\n\r\n";其中这部分,你可以用嗅探器等工具 得到 传送的数据,然后模拟出数据  以上的数据就相当于模拟的数据,
      

  18.   

    你可以这样,
    1. 下载一个嗅探器
    2. 建一个php页面 aa.php  里面写上  
    <?php
    echo "aaa";
    ?>然后打开嗅探器访问 aa.php这时候嗅探器里面数据就出来了,里面有进来的或者出去的数据,当然,你这时候想测试,所以你取第一条与GET有关的数据,  把它组成字符串如
        $out = "GET / HTTP/1.1\r\n";
        $out .= "Host: www.example.com\r\n";
        $out .= "Connection: Close\r\n\r\n";然后用上面我所给出的那种方法访问就可以了,如果不出错,里面会包含一些头方面的数据,和aa.php里面输出的 aaa
      

  19.   

    LS很多人都写出来了,很简单
    我不清楚ASP中的Timer()函数的具体情况<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    </head><?phpif (!empty($_POST["MyCode"]))
    {
    $d = getdate();
      $timer = round(microtime(1)-mktime(0,0,0,$d["mon"],$d["mday"],$d["year"]),2);
    $_SESSION["Result"] = file_get_contents("http://www.AAAAA.com/Check.asp?TimeStamp=$timer&ID=".$_POST["MyID"].'$Code='.$_POST["MyCode"]);
    }
    ?>
    <p>这是HTML代码。URL返回结果是:<?php echo $_SESSION["Result"]; ?></p>
    <?php
    if ($_SESSION["Result"]==1)
    echo "<p>是1</p>";
    else
    echo "<p>不是1</p>";
    ?><body>
    </body>
    </html>
      

  20.   

    file_get_contents("http://www.AAAAA.com/Check.asp?TimeStamp=$timer&ID=".$_POST["MyID"].'$Code='.$_POST["MyCode"]);这一行错了个符号:'$Code=' 应为 '&Code='
      

  21.   

    完全可以。
    $result = file_get_contents("http://www.xxx.com");
    $result这个字符串就是你那个网页的html源代码。至于1或0出现在什么位置,用正则去抓取下就可以了。