手机
当前位置:查字典教程网 >编程开发 >php教程 >php中用socket模拟http中post或者get提交数据的示例代码
php中用socket模拟http中post或者get提交数据的示例代码
摘要:废话不多说。直接上代码:sock_post.php:复制代码代码如下:get_post.php:复制代码代码如下:

废话不多说。直接上代码:

sock_post.php:

复制代码 代码如下:

<?php

function sock_post($url, $data='') {

$url = parse_url($url);

$url['scheme'] || $url['scheme'] = 'http';

$url['host'] || $url['host'] = $_SERVER['HTTP_HOST'];

$url['path'][0] != '/' && $url['path'] = '/'.$url['path'];

$query = $data;

if(is_array($data)) $query = http_build_query($data);

$fp = @fsockopen($url['host'], $url['port'] ? $url['port'] : 80);

if (!$fp) return "Failed to open socket to $url[host]";

fputs($fp, sprintf("POST %s%s%s HTTP/1.0/n", $url['path'], $url['query'] ? "?" : "", $url['query']));

fputs($fp, "Host: $url[host]/n");

fputs($fp, "Content-type: application/x-www-form-urlencoded/n");

fputs($fp, "Content-length: " . strlen($query) . "/n");

fputs($fp, "Connection: close/n/n");

fputs($fp, "$query/n");

$line = fgets($fp,1024);

if (@!eregi("^HTTP/1/.. 200", $line)) return;

$results = "";

$inheader = 1;

while(!feof($fp)) {

$line = fgets($fp,1024);

if ($inheader && ($line == "/n" || $line == "/r/n")) {

$inheader = 0;

}elseif (!$inheader) {

$results .= $line;

}

}

fclose($fp);

return $results;

}

$re = sock_post('http://localhost/direct_post/get_post.php?id=1',array('wel'=>'hello'));

echo $re;

?>

get_post.php:

复制代码 代码如下:

<?php

echo "post:";

print_r($_POST);

echo 'get:';

print_r($_GET);

?>

【php中用socket模拟http中post或者get提交数据的示例代码】相关文章:

php中数据的批量导入(csv文件)

php快速查找数据库中恶意代码的方法

PHP file_get_contents函数读取远程数据超时的解决方法

支持中文的PHP按字符串长度分割成数组代码

PHP中把对象转换为关联数组代码分享

我的论坛源代码(四)

PHP分页显示制作详细讲解

php中set_error_handler的用法总结

php使用GD实现颜色渐变实例

用文本作数据处理

精品推荐
分类导航