`

【汇总】异步POST数据【ajax,curl,sock】

    博客分类:
  • php
阅读更多

整理下异步post表单的方法

 

被调用的程序,http://127.0.0.1/form.php

<?php

if(!empty($_POST)) {
	print_r($_POST);
} else {
	echo 'NO POST';
}

 

 

1.curl方法

<?php

$url = 'http://127.0.0.1/form.php';
$post = 'key1=value1&key2=value2';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$data = curl_exec($ch);
curl_close($ch);

print_r($data);

 

 

2.sock方法

<?php

$encoded = 'key1=value1&key2=value2';

$url = 'http://127.0.0.1/form.php';
$url = parse_url($url);

if (!$url) 
	return "couldn\'t parse url";

if (!isset($url['port'])) 
	$url['port'] = "";

if (!isset($url['query'])) 
	$url['query'] = "";

$port = $url['port'] ? $url['port'] : 80;

$fp = fsockopen($url['host'], $port, $errno, $errstr);
if (!$fp) 
	return "Failed to open socket to $url[host] $port ERROR: $errno - $errstr";

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($encoded) . "\n");
fputs($fp, "Connection: close\n\n");
fputs($fp, $encoded . "\n");

$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);

print_r($results);

 

 

3.javascript的ajax,会把url暴露在客户端

<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
<script>
$(function(){
    $.post('http://127.0.0.1/form.php',
             {'key1':'value1','key2':'value2'},
             function(data){}
    );
});
</script>
 

 

分享到:
评论

相关推荐

    php-curl+ajax+json数据传输2.0版本

    总结起来,"php-curl+ajax+json数据传输2.0版本"是利用PHP-cURL解决AJAX跨域请求的一种解决方案,它结合了AJAX的异步特性、JSON的数据交换优势以及cURL的服务器端请求处理能力。这个组合可以实现高效、安全的数据...

    c++ curl multi http post 方式 并发 异步 vs2008

    基于libcurl官网demo,实现http post 并发 异步 demo。以文件为介质保存post参数,执行后,将失败链接的参数回存此文件。HandleCurlMulti 以轮询方式进行,可以设置每次的吞吐量。待优化的地方为文件存储,如果多...

    CURL HTTP POST方式表单递交

    1、使用的是curl库,数据采用http post方式表单递交 2、里面有完整的注释,比较规则的代码结构,适合学习交流 3、是控制台程序 4、我也是用到了curl但网上的资料大部分比较松散,我自己实现后分享给大家,相互学习,...

    PHP基于curl模拟post提交json数据示例

    主要介绍了PHP基于curl模拟post提交json数据操作,结合实例形式分析了php使用curl实现post方式提交json数据相关操作步骤与注意事项,代码简单实用,需要的朋友可以参考下

    PHP基于curl模拟post提交json数据示例.docx

    PHP 基于 curl 模拟 post 提交 json 数据示例 本文主要介绍了 PHP 基于 curl 模拟 post 提交 json 数据操作,通过实例形式分析了 PHP 使用 curl 实现 post 方式提交 json 数据相关操作步骤与留意事项。下面是文章的...

    Qt工程中用curl发送post请求,发送json返回json

    在Qt工程中,使用curl库发送POST请求并处理JSON数据是一项常见的任务,特别是在与Web服务交互时。这里我们将深入探讨如何实现这一功能。 首先,`curl`是一个强大的命令行工具和库,用于传输数据,支持多种协议,...

    HTTPGetPost.rar_c# post_c++ curl_curl_curl post_visual curl

    curl SSL post访问curl SSL post访问

    QT C++ http get、post 同步异步请求

    本项目中,我们关注的是GET和POST两种请求方式,以及它们的同步和异步实现。下面将详细介绍这两种请求方式以及同步与异步的区别。 1. **QT中的HTTP GET请求** GET请求是最常见的HTTP请求类型,用于从服务器获取资源...

    4种PHP异步执行的常用方式.除了ajax,你还知道几种异步调用方式?

    除了大家熟知的通过Ajax实现异步,还有其他几种方法,下面将逐一介绍。 1. **利用cURL库** cURL是一个强大的传输协议接口,可以用于发送HTTP请求。通过设置`CURLOPT_TIMEOUT`选项为1秒,虽然客户端需要等待至少1秒...

    Qt工程中加入curl用于发送Post请求Get请求,数据为json格式

    qt工程中引入编译好的curl库,封装了一个类来执行post请求 可以直接拿来改造。 数据格式为json格式

    c++封装curl,实现get,post,download

    POST请求常用于向服务器发送数据。在`curlpp`中,你可以设置POST字段并启动请求: ```cpp void performPostRequest(const std::string& url, const std::string& data) { curlpp::Easy request; request.setOpt...

    PHP curl 抓取AJAX异步内容示例

    // 设置POST数据,此处仅为示例,应由监控AJAX请求后填写完整参数 curl_setopt($ch3,CURLOPT_URL,$url3); // 设置请求URL curl_setopt($ch3,CURLOPT_POST,1); // 发起POST请求 curl_setopt($ch3,CURLOPT_POSTFIELDS...

    C++ 实现 HTTP HTTPS POST GET(包含curl版本和winhttp两种实现)

    C++ 实现 HTTP HTTPS POST GET(包含curl版本和winhttp两种实现)。 玩过抓包,网络协议分析的朋友肯定都知道http https post get,web端和用户的交互主要是通过post get完成的。 我这里有两种实现: 1:libcurl实现的...

    Curl实现Get下载zip文件、post上传zip文件、普通post请求等

    本篇将详细介绍如何利用C++结合Curl库实现GET下载ZIP文件、POST上传ZIP文件以及普通POST请求以获取JSON数据。 首先,我们要理解GET和POST在网络请求中的基本概念。GET是HTTP协议中最常见的方法,用于请求服务器发送...

    c++ 发送https POST请求并获取返回数据(包含appKey与appSecret)

    在C++编程中,发送HTTPS POST请求并处理返回的数据是一个常见的任务,特别是在API交互或网络服务的集成中。本文将详细讲解如何使用libcurl库来实现这个功能,并涉及如何处理appKey与appSecret的安全传输。 libcurl...

    用curl做http post

    通过`curl_easy_setopt`设置请求的URL、POST方式以及POST数据。为了获取服务器响应,我们可以设置一个回调函数`write_data`,该函数会在接收到数据时被调用。最后,执行请求并检查返回的错误代码。 需要注意的是,...

    C++ HTTP HTTPS POST GET(curl和winhttp实现).zip

    curl库提供了丰富的API,例如`curl_easy_init`初始化会话,`curl_easy_setopt`设置选项(如URL、请求方法、POST数据),以及`curl_easy_perform`执行请求。 2. **WinHTTP API**: WinHTTP是Windows操作系统提供的...

    Cocos2d-3.10 使用Curl异步下载文件(断点续传)

    在Cocos2d-x游戏引擎中,Curl库是一个强大的工具,用于实现网络通信,特别是进行异步文件下载。在3.10版本中,Cocos2d-x提供了对Curl的支持,允许开发者在游戏运行时后台下载资源,提高用户体验,并且支持断点续传...

    HTTP HTTPS POST GET(包含curl版本和winhttp两种实现)

    玩过抓包,网络协议分析的朋友肯定都知道http https post get,web端和用户的交互主要是通过post get完成的。 我这里有两种实现: 1:libcurl实现的CHttpClient类,该类实现了Htpp和Https的get post方法。 2:...

    C++使用libcurl提供的API上传文件且Post表单数据

    在这个场景中,我们将深入探讨如何利用libcurl在C++中上传文件并发送POST表单数据。 首先,`con_test.cpp`是主要的源代码文件,它包含了使用libcurl进行文件上传和POST操作的具体实现。`StdAfx.cpp`和`StdAfx.h`是...

Global site tag (gtag.js) - Google Analytics