资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

php接口post数据 php post用法

如何从一个php文件向另一个地址post数据

php调接口都是通过curl来完成的。

目前创新互联已为近1000家的企业提供了网站建设、域名、雅安服务器托管网站托管、企业网站设计、温宿网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

下面是我项目中的一个方法:

$url 是要post的地址

$params 是参数,格式array('参数1'='参数1值','参数2'='参数2值')

$header 请求头,如果模拟浏览器访问需要

$timeout 超时时间

//公共获取指定网页内容

function curl($url,$params = array(),$header = array(),$timeout = 180){

if(empty($url)) return $url;

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL,$url);//请求url地址

curl_setopt($curl, CURLOPT_HTTPHEADER , $header );  //构造IP

if(!empty($params)  count($params)  0){

curl_setopt($curl, CURLOPT_POST, true);

//Request Payload格式数据

if(isset($params['is_json'])  $params['is_json'] === true){

unset($params['is_json']);

$params = json_encode($params);

}else{

$params = http_build_query($params);

}

curl_setopt($curl, CURLOPT_POSTFIELDS, $params);        

}

//curl_setopt($curl, CURLOPT_HEADER, true);//是否返回响应头信息

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//是否将结果返回

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);//是否重定向

//curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36');

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);   // 只信任CA颁布的证书  

//curl_setopt($curl, CURLOPT_CAINFO, $cacert); // CA根证书(用来验证的网站证书是否是CA颁布)  

//curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 检查证书中是否设置域名,并且是否与提供的主机名匹配  

// 从证书中检查SSL加密算法是否存在

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); 

//curl_setopt($curl, CURLOPT_HTTPHEADER, array("Expect: ")); 

curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );

curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);//用来告诉PHP脚本在成功连接服务器前等待多久(连接成功之后就会开始缓冲输出),这个参数是为了应对目标服务器的过载,下线,或者崩溃等可能状况;

curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);//用来告诉成功PHP脚本,从服务器接收缓冲完成前需要等待多长时间。如果目标是个巨大的文件,生成内容速度过慢或者链路速度过慢,这个参数就会很有用。

// 自动设置Referer

curl_setopt($curl, CURLOPT_AUTOREFERER, 1);

//curl_setopt($curl, CURLOPT_COOKIEJAR, "D:\phpStudy\WWW\cj\cooBE66.tmp");// //写入cookie信息

//setcookie('cookie_jar', $cookie_jar); //保存cookie路径

$data = curl_exec($curl); //执行    

curl_close($curl);

return $data;

}

php 提交post数据的问题

在php中要模拟post请求数据提交我们会使用到curl函数,下面我来给大家举几个curl模拟post请求提交数据例子有需要的朋友可参考参考。

注意:curl函数在php中默认是不被支持的,如果需要使用curl函数我们需在改一改你的php.ini文件的设置,找到php_curl.dll去掉前面的";"就行了

例1

?php

$uri = "";

// 参数数组

$data = array (

'name' = 'tanteng'

// 'password' = 'password'

);

$ch = curl_init ();

// print_r($ch);

curl_setopt ( $ch, CURLOPT_URL, $uri );

curl_setopt ( $ch, CURLOPT_POST, 1 );

curl_setopt ( $ch, CURLOPT_HEADER, 0 );

curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );

curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );

$return = curl_exec ( $ch );

curl_close ( $ch );

print_r($return);

接受php页面远程服务器:

?php

if(isset($_POST['name'])){

if(!empty($_POST['name'])){

echo '您好,',$_POST['name'].'!';

}

}

?

例2

用CURL模拟POST请求抓取邮编与地址

完整代码: 代码如下

#!/usr/local/php/bin/php

?php

$runtime = new runtime ();

$runtime-start ();

$cookie_jar = tempnam('/tmp','cookie');

$filename = $argv[1];

$start_num= $argv[2];

$end_num = $argv[3];

for($i=$start_num; $i$end_num; $i++){

$zip = sprintf('6s',$i);

$fields_post = array(

'postcode' = $zip,

'queryKind' = 2,

'reqCode' = 'gotoSearch',

'search_button.x'=37,

'search_button.y'=12

);

$fields_string = http_build_query ( $fields_post, '' );

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "URL?reqCode=gotoSearchqueryKind=2postcode=".$zip);

curl_setopt($ch, CURLOPT_HEADER, true);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120 );

curl_setopt($ch, CURLOPT_REFERER, $refer );

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers_login );

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar );

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar );

curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);

curl_setopt($ch, CURLOPT_POST, 1); // 发送一个常规的Post请求

curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string );

$data = curl_exec($ch);

preg_match_all('/id="table1"[s]*?tr[s]*?td class="maintext"[sS]*?/td[s]*?/tr/', $data, $matches);

if (!$handle = fopen($filename, 'a+')) {

echo "不能打开文件 $filename";

echo "n";

exit;

}

if (fwrite($handle, $matches[0][1]) === FALSE) {

echo "不能写入到文件 $filename";

echo "n";

exit;

}

echo "成功地将 $somecontent 写入到文件$filename";

echo "n";

fclose($handle);

curl_close($ch);

}

class runtime

{

var $StartTime = 0;

var $StopTime = 0;

function get_microtime()

{

list($usec,$sec)=explode(' ',microtime());return((float)$usec+(float)$sec);

}

function start()

{

$this-StartTime=$this-get_microtime();

}

function stop(){

$this-StopTime=$this-get_microtime();

}

function spent()

{

return ($this-StopTime-$this-StartTime);

}

}

$runtime-stop ();

$con = 'Processed in'.$runtime-spent().'seconds';

echo 'Processed in'. $runtime-spent().'seconds';

模拟POST请求 提交数据或上传文件 .

.

代码如下 复制代码

发送POST请求

function execUpload(){

$file = '/doucment/Readme.txt';

$ch = curl_init();

$post_data = array(

'loginfield' = 'username',

'username' = 'ybb',

'password' = '123456',

'file' = '@d:usrwwwtranslatedocumentReadme.txt'

);

curl_setopt($ch, CURLOPT_HEADER, false);

//启用时会发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch,CURLOPT_BINARYTRANSFER,true);

curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data);

curl_setopt($ch, CURLOPT_URL, '');

$info= curl_exec($ch);

curl_close($ch);

print_r($info);

}

2.

function handleUpload(){

print_r($_POST);

echo '===file upload info:';

print_r($_FILES);

}

■cURL 函数

■curl_close — 关闭一个cURL会话

■curl_copy_handle — 复制一个cURL句柄和它的所有选项

■curl_errno — 返回最后一次的错误号

■curl_error — 返回一个保护当前会话最近一次错误的字符串

■curl_exec — 执行一个cURL会话

■curl_getinfo — 获取一个cURL连接资源句柄的信息

■curl_init — 初始化一个cURL会话

■curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄

■curl_multi_close — 关闭一组cURL句柄

■curl_multi_exec — 运行当前 cURL 句柄的子连接

■curl_multi_getcontent — 如果设置了CURLOPT_RETURNTRANSFER,则返回获取的输出的文本流

■curl_multi_info_read — 获取当前解析的cURL的相关传输信息

■curl_multi_init — 返回一个新cURL批处理句柄

■curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源

■curl_multi_select — 等待所有cURL批处理中的活动连接

■curl_setopt_array — 为cURL传输会话批量设置选项

■curl_setopt — 设置一个cURL传输选项

■curl_version — 获取cURL版本信息

怎么用php post 数据到服务器端,封装的方法

用PHP向服务器发送HTTP的POST请求,代码如下:

?php/** * 发送post请求 * @param string $url 请求地址 * @param array $post_data post键值对数据 * @return string */ function send_post($url, $post_data) { $postdata = http_build_query($post_data); $options = array( 'http' = array( 'method' = 'POST', 'header' = 'Content-type:application/x-www-form-urlencoded', 'content' = $postdata, 'timeout' = 15 * 60 // 超时时间(单位:s) ) ); $context = stream_context_create($options); $result = file_get_contents($url, false, $context); return $result; }

使用的时候直接调用上面定义的send_post方法:

$post_data = array( 'username' = 'username', 'password' = 'password');send_post('网址', $post_data);

php获取post参数的几种方式

你好,一般浏览器的请求分为GET和POST,PHP处理两种请求的方式如下:

GET,一般是明文的,比如XXX.php?a=1b=2,这里的a,b就必须用GET方式接收,接收代码如下:

$a = $_GET['a'];

$b = $_GET['b'];

//接收a,b两个变量

POST,一般是隐藏的非明文的,一般表单设置成POST的,接收方式如下:

//比如有个表单,表单中有两个文本框,name 分别是 a,b,那么代码如下:

$a = $_POST['a'];

$b = $_POST['b'];

另外:$_REQUEST,可以同时接收GET、POST的变量,用法如:

$_REQUEST['a'];//接收变量a,a可以是GET的也可以是POST的

phppost能存放按钮数据吗

不能。phppost不能存放按钮数据。phppost请求不会被缓存,不会保留在浏览器历史记录中,不能收藏为标签,对数据长度没有限制。通过phppost方法从表单发送的信息对其他人是不可见的,可用于发送敏感数据。


本文标题:php接口post数据 php post用法
网站路径:http://cdkjz.cn/article/hjpois.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220