`

【汇总】异步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 以轮询方式进行,可以设置每次的吞吐量。待优化的地方为文件存储,如果多...

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

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

    CURL HTTP POST方式表单递交

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

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

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

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

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

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

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

    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请求类型,用于从服务器获取资源...

    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...

    curl 实现SFTP上传和url Post Json信息

    在本教程中,我们将探讨如何利用 `curl` 实现 SFTP(Secure File Transfer Protocol)上传以及向 URL 发送 POST 和 GET 请求,并处理 JSON 数据。 ### 1. 使用 `curl` 进行 SFTP 上传 SFTP 是基于 SSH 的文件传输...

    PHP curl 抓取AJAX异步内容示例

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

    基于libcurl实现http post支持并发,异步

    相比GET请求,POST请求可以携带更多的数据,并且对数据的长度没有严格限制。 libcurl库提供了丰富的API,使得开发者可以方便地构建网络请求。在C++中,我们可以使用libcurl的`curl_easy_init`、`curl_easy_setopt`...

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

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

    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协议中最常见的方法,用于请求服务器发送...

    Qt工程中使用curl进行网络请求,最小程序

    在本文中,我们将深入探讨如何在Qt工程中利用curl库进行网络请求,这是一个最小化的示例,可以帮助开发者了解如何将curl集成到Qt项目中。首先,让我们了解一下curl库和Qt框架的基本概念。 **curl库介绍** curl是一...

    用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操作系统提供的...

Global site tag (gtag.js) - Google Analytics