当然不能成功了。
你应该取出COOKIE中存的 sessionid 并在 读取 manage.jsp 中,把 Cookie 发送过去。
当然,如果 sessionid 是通过 url 传递的,那么 就要把这个 sessionid 放到 manage.jsp 的URL后面。
你应该取出COOKIE中存的 sessionid 并在 读取 manage.jsp 中,把 Cookie 发送过去。
当然,如果 sessionid 是通过 url 传递的,那么 就要把这个 sessionid 放到 manage.jsp 的URL后面。
解决方案 »
- php文件打不开、
- 100分求助 如何把Discuz6.1制作成单版论坛的模式呢?有参照站
- 问怎么实现?
- PHP中上传照片的问题
- 关于Eclipse3.5+PDT+Xdebug 在include文件中设置断点,按F8进行debug的时候不会停止的问题
- 求PHP版CRM系统,偶是新手正在学习,谢谢!大家帮忙哦!
- 比较简单的问题,请教一下大家,请快来帮哈我!
- 100分,关于计数器的问题。
- fsockopen()怎么使用?
- PHP如何将拼音转换成汉字?
- 请教高手一个发送邮件的问题?谢谢!!!!!!!!!!!!!!!!!!!!!!!
- 急,php做为cgi连接mysql出现Can't create TCP/IP socket (10106)
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
%>
这个就显示正常
可能和自动跳转有关,不清除了,没有这么用过的
fopen wrappers激活了不?
我先也以为与自动跳转有关,所以我把输出输到了一个
<textarea></textarea>内但结果依然是登陆不成功我那个asp的就能成功实现,为什么php的就不行呢?唉
fopen wrappers激活了不?
是什么意思?我用getcontent("http://www.sohu.com")
返回的就是搜狐的页面,说明是可以远程抓取数据的
那如果用php应该怎么实现呢?一直不解,请大家指教
{
$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'];
{
...
return $a;
}
以上程序没有调试,反正就是这个原理
$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];
可以用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];
<?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分的诱惑力果然大!!!