当前位置:首页 » 编程语言 » php模拟post

php模拟post

发布时间: 2022-08-05 11:09:16

php实现模拟post请求用法实例

本文实例讲述了php实现模拟post请求的方法。分享给大家供大家参考。具体如下:
class
Request{
public
static
function
post($url,
$post_data
=
'',
$timeout
=
5){//curl
$ch
=
curl_init();
curl_setopt
($ch,
CURLOPT_URL,
$url);
curl_setopt
($ch,
CURLOPT_POST,
1);
if($post_data
!=
''){
curl_setopt($ch,
CURLOPT_POSTFIELDS,
$post_data);
}
curl_setopt
($ch,
CURLOPT_RETURNTRANSFER,
1);
curl_setopt
($ch,
CURLOPT_CONNECTTIMEOUT,
$timeout);
curl_setopt($ch,
CURLOPT_HEADER,
false);
$file_contents
=
curl_exec($ch);
curl_close($ch);
return
$file_contents;
}
public
static
function
post2($url,
$data=array()){//file_get_content
$postdata
=
http_build_query(
$data
);
$opts
=
array('http'
=>
array(
'method'
=>
'POST',
'header'
=>
'Content-type:
application/x-www-form-urlencoded',
'content'
=>
$postdata
)
);
$context
=
stream_context_create($opts);
$result
=
file_get_contents($url,
false,
$context);
return
$result;
}
public
static
function
post3($host,$path,$query,$others=''){//fsocket
$post="POST
$path
HTTP/1.1\r\nHost:
$host\r\n";
$post.="Content-type:
application/x-www-form-";
$post.="urlencoded\r\n${others}";
$post.="User-Agent:
Mozilla
4.0\r\nContent-length:
";
$post.=strlen($query)."\r\nConnection:
close\r\n\r\n$query";
$h=fsockopen($host,80);
fwrite($h,$post);
for($a=0,$r='';!$a;){
$b=fread($h,8192);
$r.=$b;
$a=(($b=='')?1:0);
}
fclose($h);
return
$r;
}
}
$url='http://******/con/Inter.php';
$data=Request::post($url,array('api'=>'tag_list'));
$data2=Request::post2($url,array('api'=>'tag_list'));
echo
$data;
希望本文所述对大家的php程序设计有所帮助。

⑵ php接口开发怎么模拟post请求

接口无非就是接受数据然后处理返回结果,客户端接收结果数据处理

/*apixxxxx.php*/
$data=$_POST;

数据处理.....

returnjson_encode($redata);

/*客户端 js*/

$.post('xxxxx.php',data,fucnction(datas){
处理结果
});

类似上面的处理流程

⑶ 急需php模拟post的详细代码,有详细的注释了,有例子最好了

其实这段代码并不难理解,本人表达能力不佳,见谅
<?php

$URL = ''; //需要提交到的页面
//下面这段是要提交的数据
$post_data['SysID'] = $_POST['SysID'];
$post_data['FuncID'] = $_POST['FuncID'];
$post_data['LoginID'] = $_POST['LoginID'];
$post_data['LoginKey'] = $_POST['LoginKey'];
$referrer="";
$URL_Info=parse_url($URL);
if($referrer=="")
{
$referrer=$_SERVER["SCRIPT_URI"];
}
foreach ($post_data as $key=>$value)
{
$values[]="$key=".urlencode($value);
}

$data_string=implode("&",$values);//提交的数据格式是 a=1&b=2
// Find out which port is needed - if not given use standard (=80)
if (!isset($URL_Info["port"])) {
$URL_Info["port"]=80;
// building POST-request:
//一般做网站用form提交数据后,之后的操作就不用我们不管了,
//这里就是在模拟POST操作的HTTP头,具体的可以去查HTTP协议的资料,并不复杂
$request.="POST ".$URL_Info["path"]." HTTP/1.1\n";
$request.="Host: ".$URL_Info["host"]."\n";
$request.="Referer: $referrer\n";
$request.="Content-type: application/x-www-form-urlencoded\n";
$request.="Content-length: ".strlen($data_string)."\n";
$request.="Connection: close\n";
$request.="\n";
$request.=$data_string."\n";
//exit;
}
//fsockopen的用法就这样子了,不做多说明
$fp = fsockopen($URL_Info["host"], $URL_Info["port"]);
fputs($fp, $request);//把HTTP头发送出去
while(!feof($fp)) {
//$result 是提交后返回的数据
$result .= fgets($fp, 1024);
}
fclose($fp);
?>

⑷ php 模拟登录,post到多个地址怎么做

$url = ''; //POST地址
$password = ''; //密码
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POSTFIELDS, 'username='.$_COOKIE['username'].'&password='.$password);
/**
* 如果$url是https则需要取消下面两行注释
* curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
* curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
*/
curl_exec($curl);
curl_close($curl);

⑸ php 模拟post 上传

你写一个方法把,在php里面可以使用curl库来模拟这样的表单 代码如下:
//curl实现post请求
public function curl_post($url, $data = null){
//创建一个新cURL资源
$curl = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
//设置URL和相应的选项
curl_setopt($curl, CURLOPT_URL, $url);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//执行curl,抓取URL并把它传递给浏览器
$output = curl_exec($curl);
//关闭cURL资源,并且释放系统资源
curl_close($curl);
return $output;
}

⑹ PHP模拟HTTP的POST请求时遇到的问题求助

类中 静态方法和静态属性的引用方法例如class Test{ public static $test = 1; public static function test(){ }}可以不用实例化对象直接使用 Test::$test 来取得$test属性的值静态方法调用也同理Test::test(); 直接调用静态方法test

如果我解答楼主觉得不清楚可以自己去后盾人学习,对你学习PHP应该会有帮助,

⑺ php 模拟post ,如何不被服务器封ip

既然论坛都封你ip了,说明用单个ip肯定不行,使用代理是必须的。
解决的思路是:
1. 准备多个代理;
2. 控制post速度,单位时间内不要post太频繁;
3. 选择一个代理post数据,达到一定时间(例如半小时)或post达到一定数量(例如100)时,切换代理;
4. 用新代理post数据,循环进行3-4步骤;

猜测代码中可以改进的有:
1. 构造多种主流浏览器的头信息,切换代理时使用不同的头信息;
2. 尽量在post过程中加上服务器端返回的cookie信息;

这些改动可以使你的模拟过程更接近真实的浏览器访问数据。

⑻ php怎么模拟GET与POST向微信接口提交及获取数据的方法

用curl

GET方法:

//初始化
$ch=curl_init();
//设置选项,包括URL
curl_setopt($ch,CURLOPT_URL,"http://www..com");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HEADER,0);
//执行并获取HTML文档内容
$output=curl_exec($ch);
//释放curl句柄
curl_close($ch);
//打印获得的数据
print_r($output);

POST方法:

$url="http://localhost/web_services.php";
$post_data=array("username"=>"bob","key"=>"12345");
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//post数据
curl_setopt($ch,CURLOPT_POST,1);
//post的变量
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
$output=curl_exec($ch);
curl_close($ch);
//打印获得的数据
print_r($output);

⑼ 使用php curl 模拟post请求,自动附加了data参数

$post_data_string=http_build_query($post_data,'&');

$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$get_session_url);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data_string);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$xmloutput=curl_exec($ch);

一般这样写 你自己对比下

⑽ PHP里模拟Post提交是什么意思

php
表单提交常见的就是post和get
模拟提交就是通过其他技术达到post或get的效果
php
常见的模拟就是curl方式了
作用比如说刷票
每次提交它可以模拟ip
逃过ip限制
图片上传
可以post提交
不用模拟

热点内容
上传网页用什么服务器 发布:2024-05-03 08:57:08 浏览:909
掌握ftp服务器的配置与管理 发布:2024-05-03 08:06:58 浏览:766
服务器搭建的函数 发布:2024-05-03 07:54:44 浏览:815
php包含数组 发布:2024-05-03 07:53:51 浏览:702
短暂记忆存储信息是有限的 发布:2024-05-03 07:48:14 浏览:537
java集合对象 发布:2024-05-03 07:32:13 浏览:916
苹果自带脚本 发布:2024-05-03 07:16:04 浏览:569
商城导航源码 发布:2024-05-03 07:14:15 浏览:552
shell脚本日志输出 发布:2024-05-03 06:31:04 浏览:713
服务器快捷方式是什么意思 发布:2024-05-03 06:28:18 浏览:108