您的位置:

关于php如何模拟post提交登录的信息

本文目录一览:

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面试题,PHP如何模拟POST提交登录?求详细代码

大概流程是

先构建要传输的数据

再使用php的stocket模拟post请求

例子,比如我打开这个页面所用到的数据就是(这里用的是GET请求,改成POST就行了)

构造出以上的字符串,然后使用stocket发送出去即可

$fp = fsockopen(主机ip,端口号);  

fputs($fp, 数据字符串);  

while(!feof($fp)) {

    //这里是输出请求所得到的回应数据

    $result .= fgets($fp, 128);

}

更多请自行百度php模拟post请求

因为我以前在工程实例中做过,所以比较了解

纯手打,望采纳

话说,这个问题过了就能进腾讯?门槛太低了吧。。。

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 5.2用POST方式登录,求解如何写

HTML中:(头尾的head、body之类的我就省了)

form action="xxx.php" method="post"

    用户名:input type="text" name="name" /br/

    密码:input type="password" name="password" /br/

    input type="submit" value="登录" /

/form

PHP中:

?php

//HTML的form表单中,action指向此PHP文件,method="post"时,利用$_POST即可获取到提交的内容

if($_POST['name']=='user'  $_POST['password']=='123456'){

    echo 'Y';

}else{

    echo 'N';

}

//直接使用if判断,如果用户名为user,密码为123456,则输出Y,否则为N

?

php页面向外网的asp页面post表单数据实现模拟登陆,怎么实现

这个实现方式太多了。可以用ajax跨域提交数据。可以用PHP的扩展类curl进行模样表单提交。用JS跨域一直是一个问题,但可以实现,用jquery的时候你要注意这点,只有ajax()这个方法。用curl是不存在跨域问题的。但你要注意的是:curl模样表单提交的时候,提交的字段一定要按字母集的顺序(abcdef..)中文字符一定要用urlencode()函数进行编码就可以了。要怎么提交,下一个firebug查看一下就知道了

怎么用php模拟post提交请求得到相应,能给个例子吗

//这是我写的封装类,也就是模拟POST提交

//$durl也就是URL地址,比如

//$data 为POST数组

//模拟POST提交的用途,采集数据,模拟用户登录(为什么现在登录需要验证码,不是为了测你智商..

更不是考你的眼力,而防止你模拟登录..用暴力破解法强行破解密码)

function curl_file_post_contents($durl, $timeout = 5, $data) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $durl);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);

curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_);

curl_setopt($ch, CURLOPT_REFERER, _REFERER_);

curl_setopt($ch, CURLOPT_POST, 1); //设置为POST传输

curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //添加post数据

$r = curl_exec($ch);

var_dump($ch);

if ($r === false) { //判断错误

echo curl_error($ch);

}

$info = curl_getinfo($ch); //能够在cURL执行后获取这一请求的有关信息

curl_close($ch);

return $r;

}