'; } function do_login($remote_site,$username,$password){ $form= array( 'username' => $username, 'userpass' => $password ); //echo "try login..."; $data=curl_post_urlencoded($remote_site.'/userloginex.php?action=login&cid=0¬ice=0',$form); //echo htmlentities($remote_site.'/login'); if(str_contains($data,"No such user or wrong password.")) return false; else return true; } function do_submit_one($remote_site,$username,$sid){ $langMap= array( 0 => 1, //C 1 => 0, //C++ 2 => 4, //Pascal 3 => 5, //Java ); $problem_id=1000; $language=1; $source=""; $sql="select * from solution where result=16 and solution_id=?"; $data=pdo_query($sql,$sid); if(count($data)>0){ $row=$data[0]; $language=$langMap[ $row['language']]; $problem_id=$row['problem_id']; $sql="select remote_oj,remote_id from problem where problem_id=?"; $data=pdo_query($sql,$problem_id); if(count($data)>0){ $row=$data[0]; $problem_id=$row['remote_id']; }else{ return -1; } }else{ return -1; } $sql="select * from source_code where solution_id=?"; $data=pdo_query($sql,$sid); if(count($data)>0){ $row=$data[0]; $source=$row['source']; } while(strlen($source)<50) $source.="\n \n"; // hdu要求至少50 $form=array( 'problemid' => $problem_id, 'language' => $language, 'usercode' => ($source), '_usercode' => base64_encode(rawurlencode($source)), 'check' => '0' ); //var_dump($form); $data=curl_get($remote_site."/status.php?first=&pid=&user=".$username."&lang=0&status=0"); echo (getPartByMark($data,"
",""); $sql="insert into compileinfo(solution_id,error) values(?,?) on duplicate key update error=? "; pdo_query($sql,$sid,$reinfo,$reinfo); $sql="update solution set result=?,pass_rate=?,time=?,memory=?,judger=?,judgetime=now() where solution_id=?"; pdo_query($sql,$result,0,$time,$memory,get_domain($remote_site),$sid); return $result; } if($result==4){ $pass_rate=1; }else{ $pass_rate=0; } $sql="update solution set result=?,pass_rate=?,time=?,memory=?,judger=?,judgetime=now() where solution_id=?"; pdo_query($sql,$result,$pass_rate,$time,$memory,get_domain($remote_site),$sid); echo $sql,$result,$pass_rate,$time,$memory,get_domain($remote_site),$sid; if($result==4){ $pc=pdo_query("select problem_id,contest_id from solution where solution_id=?",$sid)[0]; $pid=$pc[0]; $cid=$pc[1]; $sql="update problem set accepted=(select count(1) from solution where result=4 and problem_id=?) where problem_id=?"; pdo_query($sql,$pid,$pid); if($cid>0){ $sql="UPDATE `contest_problem` SET `c_accepted`=(SELECT count(*) FROM `solution` WHERE `problem_id`=? AND `result`=4 and contest_id=?) WHERE `problem_id`=? and contest_id=?"; pdo_query($sql,$pid,$cid, $pid,$cid); } } //get user_id $data=pdo_query("select user_id from solution where solution_id=?",$sid); $user_id=$data[0]['user_id']; //update user $sql="UPDATE `users` SET `solved`=(SELECT count(DISTINCT `problem_id`) FROM `solution` WHERE `user_id`=? AND `result`=4) WHERE `user_id`=?"; pdo_query($sql,$user_id,$user_id); $sql="UPDATE `users` SET `submit`=(SELECT count(DISTINCT `problem_id`) FROM `solution` WHERE `user_id`=? ) WHERE `user_id`=?"; pdo_query($sql,$user_id,$user_id); return $result; } function do_result($remote_site){ global $remote_oj; $sql="select solution_id,remote_id from solution where remote_oj=? and result=17 order by solution_id "; $data=pdo_query($sql,$remote_oj); foreach($data as $row){ $sid=$row['solution_id']; $rid=$row['remote_id']; // echo "$sid=>$rid"; $ret=do_result_one($remote_site,$sid,$rid); if($ret<0) { echo "error code:".$ret; break; }else{ usleep(150000); } } } //---------------------账号配置--------------------------- $remote_oj="hdu"; $remote_site="https://acm.hdu.edu.cn"; $remote_user='hustoj'; //// 请修改为你在acm.hdu.edu.cn注册的机器人账号 $remote_pass='freeproblemset'; // 请修改为你注册的机器人账号的密码 $remote_cookie=$OJ_DATA.'/'.get_domain($remote_site).'.cookie'; $remote_delay=15; //-------------------------------------------------------- if(isset($_POST[$OJ_NAME.'_refer'])){ header("location:".$_SESSION[$OJ_NAME.'_refer']); unset($_SESSION[$OJ_NAME.'_refer']); }else{ if(time()-fileatime($remote_cookie.".sub")>$remote_delay && is_login($remote_site) ){ touch($remote_cookie.".sub"); do_submit($remote_site,$remote_user); } //echo (htmlentities(curl_get($remote_site."/login0.php"))); if (!is_login($remote_site)){ var_dump(do_login($remote_site,$remote_user,$remote_pass)); }else{ echo "logined..."; } if(isset($_SESSION[$OJ_NAME.'_refer'])){ header("location:".$_SESSION[$OJ_NAME.'_refer']); unset($_SESSION[$OJ_NAME.'_refer']); } } if(time()-fileatime(__FILE__)>$remote_delay){ touch(__FILE__); do_result($remote_site); } if(isset($_GET['check'])){ $remote_delay*=2; echo ""; echo "$remote_oj