文章浏览 复制本页面地址

PHP 模拟GET POST 提交

方法一: 通过文件采集函数进行通信返回结果
$geturl = file_get_contents($url);
print_r($geturl);

方法二: 通过CURL进行

模仿POST 远程提交方法之 CURL
$url='http://baidu.com';
$post_fields['name']  = $array["lws_namecn"]; //中文名
$post_fields['email']  = $array['lws_email'];  //邮箱

$this->connect_wz($post_fields,$url);

function connect_wz($post_fields,$url){
 $ch = curl_init();  
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_HEADER, 1);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch, CURLOPT_POST,1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); 
 // 3. 执行并获取HTML文档内容
 $output = curl_exec($ch);
 // 4. 释放curl句柄
 curl_close($ch);
}

 

***************繁板***************

function curlrequest($url,$postfield,$proxy=""){
    $proxy=trim($proxy);
    $user_agent ="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)";
    $ch = curl_init();    // 初始化CURL句柄
    if(!empty($proxy)){
        curl_setopt ($ch, CURLOPT_PROXY, $proxy);//设置代理服务器
    }
    curl_setopt($ch, CURLOPT_URL, $url); //设置请求的URL
     //curl_setopt($ch, CURLOPT_FAILONERROR, 1); // 启用时显示HTTP状态码,默认行为是忽略编号小于等于400的HTTP信息
     //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);//启用时会将服务器服务器返回的“Location:”放在header中递归的返回给服务器
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);// 设为TRUE把curl_exec()结果转化为字串,而不是直接输出
    curl_setopt($ch, CURLOPT_POST, 1);//启用POST提交
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postfield); //设置POST提交的字符串
     //curl_setopt($ch, CURLOPT_PORT, 80); //设置端口
    curl_setopt($ch, CURLOPT_TIMEOUT, 25); // 超时时间
    curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);//HTTP请求User-Agent:头
    curl_setopt($ch,CURLOPT_HEADER,false);//设为TRUE在输出中包含头信息
     //$fp = fopen("example_homepage.txt", "w");//输出文件
     //curl_setopt($ch, CURLOPT_FILE, $fp);//设置输出文件的位置,值是一个资源类型,默认为STDOUT (浏览器)。
    curl_setopt($ch,CURLOPT_HTTPHEADER,array(
        'Accept-Language: zh-cn',
        'Connection: Keep-Alive',
        'Cache-Control: no-cache'
    ));//设置HTTP头信息
    $document = curl_exec($ch); //执行预定义的CURL
    $info=curl_getinfo($ch); //得到返回信息的特性
     //print_r($info);
    if($info[http_code]=="405"){
         echo "bad proxy {$proxy}\n";  //代理出错
        exit;
     }
    //curl_close($ch);
    return $document;
}

//请求URL
$url="http://localhost:8025/testphp/index2.php";
//POST提交数据,可用HTTPWATCH查看
$post_fields['phone']  = 'aass';
$post_fields['msg']    = '你好先生';  
//代理服务器
$proxy = '';
//请求
$str=curlrequest($url,$postfield,$proxy);
//输出结果
echo $str;

方法三: 其中把post一块包含进来了

function dfopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE , $ip = '', $timeout = 15, $block = TRUE, $encodetype = 'URLENCODE') {
$return = '';
$matches = parse_url($url);
$host = $matches['host'];
$path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/';
$port = !emptyempty($matches['port']) ? $matches['port'] : 80;

if($post) {
$out = "POST $path HTTP/1.0\r\n";
$out .= "Accept: */*\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\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 .= "Accept-Language: zh-cn\r\n";
$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
$out .= "Host: $host\r\n";
$out .= "Connection: Close\r\n";
$out .= "Cookie: $cookie\r\n\r\n";
}
$fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);
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 }
}
}
@fclose($fp);
return $return;
}
}

标签:
上一篇:
下一篇: