我的操作代码<?php
include("HttpClient.class.php");
//投票函数
function toupiao($user,$password){
$page="hd2000.jiaoyu.139.com";
$acc["username"]=$user;
$acc["password"]=$password;
$acc["remembor"]="1";
$client = new HttpClient($page);
$client->setDebug(true);
//开始登陆
$client->post('/index.php?s=/Index/dologin',$acc);
$pageContents2 = $client->getContent();
//开始进行投票
if (!$client->get('/index.php?s=/Vote/webvote/optid/20111338000213')) {
  die('An error occurred: '.$client->getError());
}
$pageContents = $client->getContent();echo $pageContents;
}
//读取文件,进行操作,读取手机号和密码序列
$filename="phone.txt";
$file=fopen($filename,"r");
$phone=fgets($file);
while($phone){
$name=explode(" ",$phone);
toupiao($name[0],$name[1]);
$phone=fgets($file);
}
echo "all right";?>发现登陆能成功,但是只要到投票那一点,就没有登陆,这是怎么回事。使用了class文件,由于class文件太长,在这里贴不出来,下载地址
http://scripts.incutio.com/httpclient/

解决方案 »

  1.   

    cookie没有发过去,抓一下http的包看一下!
      

  2.   

    是的很奇怪这里是 header头时间居然是1981
    Array
    (
        [server] => nginx/0.7.66
        [date] => Wed, 08 Jun 2011 03:54:37 GMT
        [content-type] => text/html; charset=utf-8
        [connection] => close
        [x-powered-by] => PHP/5.2.6
        [set-cookie] => Array
            (
                [0] => PHPSESSID=33nfm4su4a5rm0b8hkdo1hq1u3; path=/; domain=.139.com
                [1] => remembor=a%3A3%3A%7Bs%3A6%3A%22mobile%22%3Bs%3A11%3A%2218658828261%22%3Bs%3A6%3A%22passwd%22%3Bs%3A45%3A%22eOOBrzPHYBs0PJTEUGJ08R2ygKOAeCgJWD-DtUW%3DUpRNP%22%3Bs%3A5%3A%22agent%22%3Bs%3A23%3A%22Incutio+HttpClient+v0.9%22%3B%7D; expires=Sat, 28-Jul-2012 19:54:37 GMT; path=/; domain=.139.com
            )    [expires] => Thu, 19 Nov 1981 08:52:00 GMT
        [cache-control] => private
        [pragma] => no-cache
        [vary] => Accept-Encoding
        [content-encoding] => gzip
        [content-length] => 1833
    )
      

  3.   

    里面的时间是不是 意思是cookie过期了?
      

  4.   

    [expires] => Thu, 19 Nov 1981 08:52:00 GMT
    这是客户端的过期时间,1981的意思是当浏览器每次打开后,页面就已经过期了,既告诉浏览器不要在本地缓存!