当然不能成功了。
你应该取出COOKIE中存的 sessionid 并在 读取 manage.jsp 中,把 Cookie 发送过去。
当然,如果 sessionid 是通过 url 传递的,那么 就要把这个 sessionid 放到 manage.jsp 的URL后面。

解决方案 »

  1.   

    我先试试上面的方法那为什么同样的读取方法我用asp就能成功呢
      

  2.   

    没发现在机子上生成了cookie,那如何取?
      

  3.   

    <%
    Function getHTTPPage(path)
    t=GetBody(Path)
        getHTTPPage=BytesToBstr(t,"GB2312")
    end functionFunction getbody(url)
    on error resume next
    dim objxmlhttp
    set objxmlhttp=createobject("Microsoft.XMLHTTP")
    with objxmlhttp
    .open "Get",url,false,"",""
    .send
    getbody=.responsebody
    end with
    objxmlhttp.close
    set objxmlhttp=nothing
    end functionfunction bytestobstr(body,cset)
    dim objstream
    set objstream=server.createobject("adodb.stream")
    with objstream
        .type=1
        .mode=3
        .open
        .write body
        .position=0
        .type=2
        .charset=cset
        bytestobstr=objstream.readtext
    end with
    objstream.close
    set objstream=nothing
    end functionurl="http://www.url.com/judge.jsp?username=admin&password=admin888"
    gethtml=gethttppage(url)
    url="http://www.url.com/manage.jsp"
    gethtml=gethttppage(url)
    response.write gethtml
    %>
    这个就显示正常
      

  4.   

    http://www.url.com/judge.jsp?username=admin&password=admin888
    可能和自动跳转有关,不清除了,没有这么用过的
      

  5.   

    asp是用Microsoft.XMLHTTP的啊,用xml方式得到
    fopen wrappers激活了不?
      

  6.   

    不清除了是什么意思?
    我先也以为与自动跳转有关,所以我把输出输到了一个
    <textarea></textarea>内但结果依然是登陆不成功我那个asp的就能成功实现,为什么php的就不行呢?唉
      

  7.   

    to: patchclass(黑翼) 
    fopen wrappers激活了不?
    是什么意思?我用getcontent("http://www.sohu.com")
    返回的就是搜狐的页面,说明是可以远程抓取数据的
      

  8.   

    XMLHTTP 方式应该保存了COOKIE~~~~~~~
      

  9.   

    我觉得xmlhttp也是保存了cookie
    那如果用php应该怎么实现呢?一直不解,请大家指教
      

  10.   

    用fsockopen()把上次得到的PHPSESSID保存起来,然后第二次把这个ID发过去
      

  11.   

    function getContent($host, $page, $sessid)
    {
      $fp = fsockopen($host, 80);
      fputs("GET $page HTTP/1.0\r\n");
      fputs("Host: $host\r\n");
      if (empty($sessid))
      {
        fputs("Cookie: PHPSESSID=$sessid;path=/\r\n");
      }
      fputs("\r\n");
      while(!feof($fp))
      {
         $content .= fgets($fp, 1024);
      }
      preg_match("/PHPSESSID=([0-9a-zA-Z]+);/", $content, $matches);
      $i = strpos($str, "\r\n\r\n");//注意:linux下是\n\n
      $a['sessionid'] = $matches[1];
      $a['content'] = substr($content, $i);
    }$a = getContent("www.url.com","judge.jsp?username=admin&password=admin888",'');
    $b = getContent("www.url.com","manage.jsp", $a['sessionid']);
    echo $b['content'];
      

  12.   

    function getContent($host, $page, $sessid)
    {
      ...
      return $a;
    }
    以上程序没有调试,反正就是这个原理
      

  13.   

    使用pear类http/client require_once 'HTTP/Client.php';
    $client  = new HTTP_Client();
    $client->setDefaultHeader("Referer",$refer); $client->get($url);//这里访问登陆页面获取登陆信息.
             $client->_cookieManager->_cookies["cookie name"];//获得cookie值
    print_r($client); //仔细找找client里面有登陆成功后返回的cookie,将这个cookie保存起来,然后用以下方式再去读要登陆验证的页面.具体可以自己去看看pear/http/client.php和pear/http/client/cookiemanager.php
    require_once 'HTTP/Client.php';
    $client  = new HTTP_Client();
             $client->_cookieManager->addCookie("name","value");
    $client->setDefaultHeader("Referer",$refer); $client->get($url);
    return $client->_responses[0][body]; 
      

  14.   

    另外你那个读取内容的函数写得不行啊.
    可以用return implode("",file($url));或者 return file_get_contents($url);上面这个代码完整一点可以这样:
             //$cookies = array(); require_once 'HTTP/Client.php';
    $client  = new HTTP_Client();
             $client->get("http://www.url.com/judge.jsp?username=admin&password=admin888");
             //$cookies = $client->_cookieManager->_cookies;
             //$client->_cookieManager->addCookie($cookies);
    $client->get("http://www.url.com/manage.jsp"); print $client->_responses[0][body]; 
      

  15.   

    xmlhttp支持COOKIE的!所以没有任何问题。php代码如下
    <?PHP
    //登陆并保存COOKIE
    $f = fsockopen("www.wokeyi.net",80);
    $cmd = <<<EOT
    GET /test/login.php?name=test&password=test HTTP/1.0
    EOT;
    fputs($f,$cmd);
    $result = '';
    $cookie = '';
    $location = '';
    while($line = fgets($f))
    {
    $result .= $line;
    //取得location跟setCookie头HTTP头信息
    $tmp = explode(":",$line);
    if($tmp[0]=="Set-Cookie")
    $cookie .= $tmp[1];
    if($tmp[0]=="Location")
    $location = $tmp[1];
    }
    fclose($f);//下面访问你要访问的页面
    $f = fsockopen("www.wokeyi.net",80);
    //下面的cookie就是发送前页保存下的的cookie
    $cmd = <<<EOT
    GET /test/test.php HTTP/1.0
    cookie:$cookie
    EOT;
    fputs($f,$cmd);
    while($line = fgets($f))
    {
    echo $line;
    }
    fclose($f);
    ?>
    test/test.php代码
    <?php
    session_start();
    echo "<font color='red'>".$_SESSION["login"]."</font>";
    ?>test/login.php代码
    <?php
    session_start();
    session_register("login");
    if($_GET["name"]=="test"&&$_GET["password"]=="test")
    {
    $_SESSION["login"]="Logined";
    }
    ?>你可以测试一下
    ps:100分的诱惑力果然大!!!
      

  16.   

    你可以访问www.wokeyi.net/test.php查看效果。
      

  17.   

    贡献一下我的代码吧,http://www.imsorry.com.cn/blog/blog.php?aid=7&BlogID=1