`
ling凌yue月
  • 浏览: 339203 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

php post到指定URL——fsockopen

    博客分类:
  • php
阅读更多
<?php
function sendpost($url, $data){
	//先解析url
	$url = parse_url($url);
	$url_port = !isset($url['port']) ? (($url['scheme'] == 'http') ? 80 : 443) : $url['port'];
	if (!$url)
	{
		return "couldn't parse url";
	}
	//将参数拼成URL key1=value1&key2=value2 的形式
	$encoded = "";
	while (list($k, $v) = each($data))
	{
		$encoded .= ($encoded ? '&' : '');
		$encoded .= rawurlencode($k)."=".rawurlencode($v);
	}
	$len = strlen($encoded);
	//拼上http头
	$out = "POST ".$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){
		echo "$errstr($errno)\n";
	}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;
}
	$arrVal["eee"] = "Hello";
	$arrVal["ee"] = "Sorry";
	echo sendpost("http://localhost/test.php",$arrVal);
?>

post.php 的内容
<?php
	while(list($k,$v) = each($HTTP_POST_VARS)){
	   echo "<h1>".$k."=".$v."<h1><br />";
	}
?>



function sendpost($url, $data,$sendType='POST'){
	//先解析url
	$url = parse_url($url);
	$url_port = !isset($url['port']) ? (($url['scheme'] == 'http') ? 80 : 443) : $url['port'];
	if (!$url)
	{
		return "couldn't parse url";
	}
	//将参数拼成URL key1=value1&key2=value2 的形式
	$encoded = "";
	while (list($k, $v) = each($data))
	{
		$encoded .= ($encoded ? '&' : '');
		$encoded .= rawurlencode($k)."=".rawurlencode($v);
	}
	$len = strlen($encoded);
	//拼上http头
	$out = "{$sendType} ".$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){
		echo "$errstr($errno)\n";
	}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;
}



此文章来自网上,仅供参考
分享到:
评论

相关推荐

    fsockopen get/post 表单及上传文件例子

    在PHP编程中,`fsockopen`函数是一个非常重要的网络通信工具,它允许开发者通过创建一个到指定主机的套接字连接来实现低级别的网络I/O操作。本示例主要探讨如何利用`fsockopen`进行GET和POST请求,以及处理文件上传...

    php调用远程url的六种方法,php函数

    `fsockopen` 同样可以用于POST请求,需要构建完整的POST请求包,包括请求头和请求体。下面是一个示例函数: ```php function HTTP_Post($URL, $data, $cookie, $referrer = "") { // 解析URL $URL_Info = parse_...

    发送POST请求的三种方式的php类

    在这个例子中,`curl_init()`初始化cURL会话,`curl_setopt()`设置各种选项,如`CURLOPT_POST`启用POST方法,`CURLOPT_POSTFIELDS`指定POST数据,`CURLOPT_RETURNTRANSFER`使响应被返回而不是直接输出。 2. `file_...

    利用PHP fsockopen 模拟POST/GET传送数据的方法

    利用PHP的fsockopen函数可以模拟向其他网页或站点发送HTTP请求,具体来说,可以通过模拟POST和GET方法来传送数据。下面详细说明如何使用fsockopen函数来完成这一任务。 首先,要理解fsockopen函数是PHP中用于打开...

    fsockopen用法.txt

    在PHP中,`fsockopen`是一个非常强大的函数,用于创建一个网络连接(套接字)到指定的主机和端口。这个函数在处理网络通信时特别有用,尤其是在进行HTTP请求、FTP操作或任何需要与远程服务器交互的应用场景中。 ###...

    php使用fsockopen函数发送post,get请求获取网页内容的方法

    本文实例讲述了php使用fsockopen函数发送post,get请求获取网页内容的方法。分享给大家供大家参考。 具体实现代码如下: 复制代码 代码如下:$post =1; $url = parse_url($url); $host =’//www.jb51.net’; $path ...

    php自动提交表单的方法(基于fsockopen与curl)_.docx

    fsockopen是PHP内置的一个网络连接函数,它可以打开到指定服务器的TCP/IP套接字连接。以下是如何使用fsockopen来实现表单自动提交的步骤: 首先,解析目标URL以获取主机名、端口和路径等信息。然后,创建一个到该...

    php利用fsockopen GET/POST提交表单及上传文件

    在服务器端,例如`uploadapi.php`,接收文件后,需要写入到指定目录: ```php $UPLOAD_PATH = '/path/to/your/upload/folder'; $photo = $_POST['photo']; $filename = time() . '.jpg'; file_put_contents($UPLOAD...

    php fsockopen伪造post与get方法的详解

    该函数打开到指定主机的网络流连接,语法如下: ```php fsockopen(string $hostname, int $port, int &$errno, string &$errstr, float $timeout) ``` - `$hostname`:远程服务器的主机名或IP地址。 - `$port`:要...

    基于php socket(fsockopen)的应用实例分析

    这个选项允许PHP通过URL访问数据,从而启用`fsockopen`的功能。`fsockopen`实际上是对底层Socket API的简单封装,它结合了`socket_create`和`socket_connect`这两个函数的操作,简化了客户端Socket编程的步骤。 在...

    PHP实例开发源码——PhpSpy 2008 WEB后门程序.zip

    5. **网络通信**:PhpSpy可能通过网络发送或接收数据,这涉及到如`fsockopen()`、`socket_create()`等网络函数。 6. **权限控制**:了解如何利用PHP进行权限提升,如执行系统命令(`exec()`, `shell_exec()`)。 7...

    php模拟POST提交的4种方法.pdf

    fsockopen函数允许创建一个到指定主机的网络连接,可以用来构建HTTP请求。以下是使用fsockopen实现POST提交的示例: ```php $URL = 'http://xxx.xxx.xxx.xx/xx/xxx/top.php'; $post_data['clientname'] = "test...

    post-to-host:全面的基于fsockopen的HTTP请求功能,支持GET、POST、POST with file、raw POST、POST with指定IP等

    全面的基于fsockopen的HTTP请求功能,支持GET、POST、POST with file、raw POST、POST with指定IP等。 post_to_host.php 用 fsockopen 替换 curl: 变量前缀解释: 'arr' means any array, such as: array('var1...

    php异步:在php中使用fsockopen curl实现类似异步处理的功能方法

    在这个场景中,我们利用fsockopen发送一个HTTP GET请求到指定的URL,但不等待响应,从而实现非阻塞的请求。 以下是一个简单的fsockopen异步请求的示例: ```php function _sock($url) { $host = parse_url($url, ...

    php源码 fsockopen获取网页内容实例详解

    本文将详细介绍如何使用PHP中的fsockopen函数获取网页内容,以及相关的PHP代码实例。fsockopen是PHP提供的一个网络函数,主要用于打开一个网络连接或Unix域套接字的连接。通过fsockopen函数,我们可以向服务器发送...

    浅谈php中curl、fsockopen的应用

    最近要用到通过post上传文件,网上盛传的有curl的post提交和fsockopen,其中curl最简单,于是从最简单的说起。 这是简单的将一个变量post到另外一个页面 $url = ''; $data = array('a'=&gt; 'b'); $ch = curl_init(); ...

Global site tag (gtag.js) - Google Analytics