时间:2021-07-01 10:21:17 帮助过:13人阅读
public function sendpost($postType='POST')
{
$url = $this->postURL;
$data = $this->postData == '' ? array() : $this->postData;
//先解析url
$url = parse_url($url);
$url_port = !isset($url['port']) ? (($url['scheme'] == 'http') ? 80 : 443) : $url['port'];
if (!$url)
{
$this->errMessage = "couldn't parse url";
return false;
}
//将参数拼成URL key1=value1&key2=value2 的形式
$encoded = "";
while (list($k, $v) = each($data))
{
$encoded .= ($encoded ? '&' : '');
$encoded .= rawurlencode($k)."=".rawurlencode($v);
}
//echo $encoded;exit;
$len = strlen($encoded);
//拼上http头
$out = "{$postType} ".$url['path'].(isset($url['query']) ? ('?'.$url['query']) : '')." HTTP/1.1\r\n";
$out .= "Host:".$url['host']."\r\n";
$out .= "Content-type: application/x-www-form-urlencoded\r\n";
$out .= "Connection: Close\r\n";
$out .= "Content-Length: $len\r\n";
$out .= "\r\n";
$out .= $encoded."\r\n";
//打开一个sock
$fp = @fsockopen($url['host'], $url_port);
$line = "";
if (!$fp)
{
$this->errMessage = "$errstr($errno)\n";
return false;
}
else
{
fwrite($fp,$out);
while (!feof($fp))
{
$line .= fgets($fp, 2048);
}
}
//去掉头文件
if ($line)
{
$body = stristr($line, "\r\n\r\n");
$body =substr($body, 4, strlen($body));
$line = $body;
}
fclose($fp);
return $line;
}
$.ajax({
type : "POST",
cache : false,
url : _url,
data : _data,
dataType : 'json',
success : function(data) {
}
});
[User:root Time:03:17:09 Path:/home/apache/web]$ cat test.php "baidu", 'b' => "client backend")); echo $response; ?> [User:root Time:03:17:12 Path:/home/apache/web]$ cat main.php
------解决方案--------------------
另外,https你的代码是无力的,必须用php支持的context参数利用stream_context_create配合file_get_contents之类的使用或者fopen之类的使用,或者直接用curl。