php模拟post和get方法 [discuz的方法]

来源:互联网 发布:linux系统修改ip地址 编辑:程序博客网 时间:2024/06/05 07:51
把post数据用数组$post_data表示出来,然后用下面的函数就可以了,非常简单,但是非常实用;
$URL是你要提交的url地址;
$referrer 是你浏览页面的上一历史页面。
如有端口号可放在$url上就行如 http://www.sendnet.cn:8000/getfile.php

$post_data[0] = '深达设计';$post_data[1] = '0755-83769155';$URL='http://www.sendnet.cn/getfile.php';$referrer="";// parsing the given URL$URL_Info=parse_url($URL);// Building referrerif($referrer=="") // if not given use this script as referrer$referrer='http://www.sendnet.cn';// making string from $dataforeach($post_data as $key=>$value){$values[]="$key=".urlencode($value);}$data_string=implode("&",$values);// Find out which port is needed - if not given use standard (=80)$content = uc_fopen($URL,'',$data_string);echo $content;function uc_fopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE, $ip = '', $timeout = 15, $block = TRUE) {$return = '';$matches = parse_url($url);!isset($matches['host']) && $matches['host'] = '';!isset($matches['path']) && $matches['path'] = '';!isset($matches['query']) && $matches['query'] = '';!isset($matches['port']) && $matches['port'] = '';$host = $matches['host'];$path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/';$port = !empty($matches['port']) ? $matches['port'] : 80;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";$out .= "Content-Type: application/x-www-form-urlencoded\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 .= "Referer: $boardurl\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 < = 0;}}}@fclose($fp);return $return;}}


 

 

 

 

原创粉丝点击