示例#1
0
 protected function sendAndReceive($request)
 {
     $f = new SaeFetchurl();
     $cookie = $this->getCookie();
     if ($cookie != '') {
         $f->setHeader("Cookie", $cookie);
     }
     if ($this->keepAlive) {
         $f->setHeader("Connection", "keep-alive");
         $f->setHeader("Keep-Alive", $this->keepAliveTimeout);
     } else {
         $f->setHeader("Connection", "close");
     }
     foreach ($this->header as $name => $value) {
         $f->setHeader($name, $value);
     }
     $f->setMethod("post");
     $f->setPostData($request);
     $f->setConnectTimeout($this->timeout);
     $f->setSendTimeout($this->timeout);
     $f->setReadTimeout($this->timeout);
     $response = $f->fetch($this->url);
     if ($f->errno()) {
         throw new Exception($f->errno() . ": " . $f->errmsg());
     }
     $http_response_header = $f->responseHeaders(false);
     $this->setCookie($http_response_header);
     return $response;
 }
示例#2
0
function getName($stuID, $pwd)
{
    $f = new SaeFetchurl();
    $f->setMethod('post');
    $logindata['IPT_LOGINUSERNAME'] = $stuID;
    $logindata['IPT_LOGINPASSWORD'] = $pwd;
    $f->setPostData($logindata);
    $f->setAllowRedirect(false);
    $f->fetch('http://222.30.60.9/meol/homepage/common/login.jsp');
    if ($f->errno()) {
        $cookies = $f->responseCookies(false);
        $f->setCookies($cookies);
        $content = $f->fetch('http://222.30.60.9/meol/welcomepage/student/index.jsp');
        $name = substr($content, strlen('<li>' . '   ') + strpos($content, '<li>') + 3, (strlen($content) - strpos($content, '</li>')) * -1);
        return iconv('GBK', 'UTF-8//IGNORE', $name);
    } else {
        return false;
    }
}
示例#3
0
 public function invoke($functionName, &$arguments = array(), $byRef = false, $resultMode = HproseResultMode::Normal)
 {
     $stream = new HproseStringStream(HproseTags::TagCall);
     $hproseWriter = new HproseWriter($stream);
     $hproseWriter->writeString($functionName, false);
     if (0 < count($arguments) || $byRef) {
         $hproseWriter->reset();
         $hproseWriter->writeList($arguments, false);
     }
     if ($byRef) {
         $hproseWriter->writeBoolean(true);
     }
     $stream->write(HproseTags::TagEnd);
     $request = $stream->toString();
     if ($this->filter) {
         $request = $this->filter->outputFilter($request);
     }
     $stream->close();
     $f = new SaeFetchurl();
     $cookie = $this->getCookie();
     if ($cookie != "") {
         $f->setHeader("Cookie", $cookie);
     }
     if ($this->keepAlive) {
         $f->setHeader("Connection", "keep-alive");
         $f->setHeader("Keep-Alive", $this->keepAliveTimeout);
     } else {
         $f->setHeader("Connection", "close");
     }
     foreach ($this->header as $name => $value) {
         $f->setHeader($name, $value);
     }
     $f->setMethod("post");
     $f->setPostData($request);
     $f->setConnectTimeout($this->timeout);
     $f->setSendTimeout($this->timeout);
     $f->setReadTimeout($this->timeout);
     $response = $f->fetch($this->url);
     if ($f->errno()) {
         throw new HproseException($f->errno() . ": " . $f->errmsg());
     }
     $http_response_header = $f->responseHeaders(false);
     $this->setCookie($http_response_header);
     if ($this->filter) {
         $response = $this->filter->inputFilter($response);
     }
     if ($resultMode == HproseResultMode::RawWithEndTag) {
         return $response;
     }
     if ($resultMode == HproseResultMode::Raw) {
         return substr($response, 0, -1);
     }
     $stream = new HproseStringStream($response);
     $hproseReader = new HproseReader($stream);
     $result = NULL;
     $error = NULL;
     while (($tag = $hproseReader->checkTags(array(HproseTags::TagResult, HproseTags::TagArgument, HproseTags::TagError, HproseTags::TagEnd))) !== HproseTags::TagEnd) {
         switch ($tag) {
             case HproseTags:
                 if ($resultMode == HproseResultMode::Serialized) {
                     $result = $hproseReader->readRaw()->toString();
                 } else {
                     $hproseReader->reset();
                     $result =& $hproseReader->unserialize();
                 }
                 break;
             case HproseTags:
                 $hproseReader->reset();
                 $args =& $hproseReader->readList();
                 for ($i = 0; $i < count($arguments); $i++) {
                     $arguments[$i] =& $args[$i];
                 }
                 break;
             case HproseTags:
                 $hproseReader->reset();
                 $error = new HproseException($hproseReader->readString());
                 break;
         }
     }
     if (!is_null($error)) {
         throw $error;
     }
     return $result;
 }
示例#4
0
 function dfopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE, $ip = '', $timeout = 15, $block = TRUE, $encodetype = 'URLENCODE')
 {
     //error_log("[uc_server]\r\nurl: $url\r\npost: $post\r\n\r\n", 3, 'c:/log/php_fopen.txt');
     $return = '';
     $matches = parse_url($url);
     $host = $matches['host'];
     $path = $matches['path'] ? $matches['path'] . ($matches['query'] ? '?' . $matches['query'] : '') : '/';
     $port = !empty($matches['port']) ? $matches['port'] : 80;
     $ch = curl_init();
     // set URL and other appropriate options
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     if ($post) {
         curl_setopt($ch, CURLOPT_POST, true);
         curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
     }
     curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER[HTTP_USER_AGENT]);
     //curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
     curl_setopt($ch, CURLOPT_COOKIE, $cookie);
     $return = curl_exec($ch);
     curl_close($ch);
     return $return;
     $f = new SaeFetchurl();
     if (is_array($post)) {
         $f->setPostData($post);
     }
     if (is_array($cookie)) {
         foreach ($cookie as $name => $value) {
             $f->setCookie($name, $value);
         }
     }
     $return = $f->fetch($url);
     return $return;
     if ($post) {
         $out = "POST {$path} HTTP/1.0\r\n";
         $out .= "Accept: */*\r\n";
         //$out .= "Referer: $boardurl\r\n";
         $out .= "Accept-Language: zh-cn\r\n";
         $boundary = $encodetype == 'URLENCODE' ? '' : ';' . substr($post, 0, trim(strpos($post, "\n")));
         $out .= $encodetype == 'URLENCODE' ? "Content-Type: application/x-www-form-urlencoded\r\n" : "Content-Type: multipart/form-data{$boundary}\r\n";
         $out .= "User-Agent: {$_SERVER['HTTP_USER_AGENT']}\r\n";
         $out .= "Host: {$host}:{$port}\r\n";
         $out .= 'Content-Length: ' . strlen($post) . "\r\n";
         $out .= "Connection: Close\r\n";
         $out .= "Cache-Control: no-cache\r\n";
         $out .= "Cookie: {$cookie}\r\n\r\n";
         $out .= $post;
     } else {
         $out = "GET {$path} HTTP/1.0\r\n";
         $out .= "Accept: */*\r\n";
         //$out .= "Referer: $boardurl\r\n";
         $out .= "Accept-Language: zh-cn\r\n";
         $out .= "User-Agent: {$_SERVER['HTTP_USER_AGENT']}\r\n";
         $out .= "Host: {$host}:{$port}\r\n";
         $out .= "Connection: Close\r\n";
         $out .= "Cookie: {$cookie}\r\n\r\n";
     }
     if (function_exists('fsockopen')) {
         $fp = @fsockopen($ip ? $ip : $host, $port, $errno, $errstr, $timeout);
     } elseif (function_exists('pfsockopen')) {
         $fp = @pfsockopen($ip ? $ip : $host, $port, $errno, $errstr, $timeout);
     } else {
         $fp = false;
     }
     if (!$fp) {
         return '';
     } else {
         stream_set_blocking($fp, $block);
         stream_set_timeout($fp, $timeout);
         @fwrite($fp, $out);
         $status = stream_get_meta_data($fp);
         if (!$status['timed_out']) {
             while (!feof($fp)) {
                 if (($header = @fgets($fp)) && ($header == "\r\n" || $header == "\n")) {
                     break;
                 }
             }
             $stop = false;
             while (!feof($fp) && !$stop) {
                 $data = fread($fp, $limit == 0 || $limit > 8192 ? 8192 : $limit);
                 $return .= $data;
                 if ($limit) {
                     $limit -= strlen($data);
                     $stop = $limit <= 0;
                 }
             }
         }
         @fclose($fp);
         return $return;
     }
 }
示例#5
0
function sign($cookie, $tiebaname, $fid, $urlname)
{
    $f = new SaeFetchurl();
    $f->setMethod("post");
    $f->setCookie("BDUSS", $cookie);
    $tbs = tbs($cookie);
    curl_get2("http://tieba.baidu.com/f/user/json_userinfo", $cookie, $rescookie);
    $cookieT = "TIEBA_USERTYPE=" . $rescookie['TIEBA_USERTYPE'] . ";TIEBAUID=" . $rescookie['TIEBAUID'] . ";BAIDUID=" . $rescookie['BAIDUID'] . "=1;BDUSS=" . $cookie;
    $poststr = $cookieT . "fid=" . $fid . "from=tiebakw=" . $tiebaname . "net_type=1tbs=" . $tbs;
    $sign = md5($poststr . "tiebaclient!!!");
    $poststr = $cookieT . "&fid=" . $fid . "&from=tieba&kw=" . $urlname . "&net_type=1&tbs=" . $tbs . "&sign=" . $sign;
    $f->setPostData($poststr);
    $text = $f->fetch("http://c.tieba.baidu.com/c/c/forum/sign");
    if ($f->errno() == 0) {
        return $text;
    } else {
        return false;
    }
}