php 模拟get post,PHP模拟GET和POST提交数据

/*

*@param String $url是请求地址

*@param Array $getData 是GET数据

*@param Array $postData

*/

public function Http($url, $getData, $postData)

{

if (!is_string($url) || (!is_array($getData)) || (!is_array($postData))) {

return '';

}

//读取url后面参数

$parse_url = parse_url($url);

$urldata = $parse_url['query'];

parse_str($urldata, $get);

//整合两部分get数据

$getData = array_merge($getData, $get);

$param = "?".http_build_query($getData);//注意这里http_build_query已经将参数urlencode处理

$url_with_get = $url.$param;

if (function_exists('curl_init')) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url_with_get);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);

curl_close($ch);

return $result;

} else {

$content = http_build_query($postData);

$content_length = strlen($content);

$context = array(

'http' =>

array(

'method' => 'POST',

'user_agent' => $_SERVER['HTTP_USER_AGENT'],

'header' => 'Content-Type: ' . 'text/html' . "\r\n" .

'Content-Length: ' . $content_length,

'content' => $content

)

);

$context_id = stream_context_create($context);

$sock = fopen($url_with_get, 'r', false, $context_id);

$result = '';

if ($sock) {

while (!feof($sock)){

$result .= fgets($sock, 4096);

}

fclose($sock);

}

return $result;

}

}

使用方法:(很简单的一个例子)

$url = 'http://192.168.1.180/index/get.php?name=中文&b=host';

//POST数据

$post = array('sign' => md5('Joyous'));

//GET数据

$get = array('host' => 'blog.phpfs.com','name' => '中文ss');

echo Http($url, $get, $post);

测试结果:(get.

var_dump($_GET);

var_dump($_POST);

array (size=2)

‘name’ => string ‘中文’ (length=6)

‘b’ => string ‘host’ (length=4)

array (size=1)

‘sign’ => string ‘2b561e261cf789b507a222faea3e69f3’ (length=32)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值