PHP 利用curl_init发起http请求模仿登录

备注:使用curl_init函数,必须要打开这个php扩展。

1.打开php.ini,开启extension=php_curl.dll
2.检查php.ini的extension_dir值是哪个目录,检查有无php_curl.dll,没有的请下载php_curl.dll,再把php目录中的libeay32.dll,ssleay32.dll拷到c:/windows/system32里面。

发起http请求

 代码如下 复制代码

function _http_curl_post($url,$data)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 4);
    curl_setopt($ch, CURLOPT_TIMEOUT,4);
         
    if($data){
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, "value=".json_encode($data));  //请求参数转为json格式
    }
    curl_setopt($ch, CURLOPT_HEADER, false);
    $string = curl_exec($ch);
    curl_close($ch);
    return $string;
}

调用方法

 代码如下 复制代码

$params = array();
$params['id']       = 1
$params['web_name']   = '好脚本';
$params['web_url']    = 'http://www.111cn.net/';
$params['web_miaoshu']      = '脚本编程示例';
$data = _curl_post($url,$params);
$arr =json_decode($data);

除了http请求之外还有一个https的请求,上次我做人人网的一键登录,它的接口就是https的url,使用上面的函数,最终报错。如果您也遇到这样的问题,你可以参考下面方法解决。

https请求示例

 代码如下 复制代码

function _https_curl_post($url, $vars) 

    foreach($vars as $key=>$value)
    {
        $fields_string .= $key.'='.$value.'&' ;
    } 
    $fields_string = substr($fields_string,0,(strlen($fields_string)-1)) ;
    $ch = curl_init();  
    curl_setopt($ch, CURLOPT_URL,$url); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,  2);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);  // this line makes it work under https
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_POST, count($vars) );
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);     
    $data = curl_exec($ch);        
    curl_close($ch);  
       
    if ($data)
    {
        return $data;
    }
    else
    {
        return false;
    }
}

时间: 2024-09-19 09:23:32

PHP 利用curl_init发起http请求模仿登录的相关文章

cordova 发起的请求,用于登录,当密码中存在特殊字符时,URL会被截断,.net端接收不全

问题描述 cordova 发起的请求,用于登录,当密码中存在特殊字符时,URL会被截断,.net端接收不全 $.ajax({ type: "get", url: "http://192.168.0.1:80/AppService.asmx/Login", data: "{UserID: '123',Password:'123456*#' }", dataType: "json", success: function(data)

php采用curl模仿登录人人网发布动态的方法

 说到php中模仿登录很多人第一时间会想到curl函数系列了,这个没错本例子也是使用curl模仿登录之后再进行动态发布,原理也简单我们只要抓取人人网的登录信息,然后再由curl post登录数据上去就可以了. 具体代码如下:    代码如下: $rconfig = pdo_fetch("SELECT * FROM ".tablename("eduTwo_renren")." WHERE weid = :weid",array(':weid'=&g

nodejs实现HTTPS发起POST请求

  nodejs实现HTTPS发起POST请求: 准备用nodejs搞一个快速注册163邮箱的东西,需要在某一步的时候post数据到https,node的官方文档实在太简陋了,网上找了个差不多的例子,拿来改了改用. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 var util = require('util'), https = require('https');  

网易popo发起文件请求要怎么操作

  一:登陆popo,然后随便点击一个对话窗口(当然这里你最好打开你想要传送文件的那个好友对话窗口),然后找到"文件"选项并点击它,当你选择好文件后就可以点"发送"这个功能即可. 二:你还可以用自己的鼠标直接拖动那个你想传送的文件拉到聊天窗口中,这也是网易popo发起文件请求的一个好方法.         注:更多精彩教程请关注三联电脑教程栏目

账号-有没有什么办法能让web页面利用ad用户帐户自动登录,并且输出帐户名

问题描述 有没有什么办法能让web页面利用ad用户帐户自动登录,并且输出帐户名 公司办公用的是AD域环境,每个人用域帐号登录到PC上. 不知道PHP有什么方法能实现: 域用户登录到自己的机器后,打开web页面,不用再输入帐号密码就已经实现登录了,并且在web页面上输出该域名账号. 非域用户打开web登陆页面需要再输入一次帐号密码才行. 解决方案 http://www.07net01.com/linux/yuyonghuzizhuxiugaiADshuxingWebyingyong___ADCus

利用xlst将ssas请求回来的xml解析为table

问题描述 利用xlst将ssas请求回来的xml解析为table 最近在做一个关于olap的项目,前端利用的是xmla4js.但是如果连接ssas的服务做请求的话, 解析处理的表格就对不齐,自己也知道问题出在哪里,但是不会写xslt语句.希望能得到一些指点.

extjs tabpanel不使iframe,利用锚点技术请求html,但是html中的js失效

问题描述 extjs tabpanel不使iframe,利用锚点技术请求html,但是html中的js失效 代码很简单 var tabPanel = new Ext.panel.Panel({ id: tabId, title: text, closable: true, layout: 'fit', deferredRender: false, loadMask: 'loading...', loader: { url: href, autoLoad: true, scripts: true

java代码发起http请求,什么工具可以监听到连接参数

问题描述 比如,在eclipse中,代码发起http请求成功,请问有没有好的监听工具能够监听到?类似如httpwatch那样,可以看到参数,url等... 问题补充:redstarofsleep 写道 解决方案 wireshark

nodejs实现HTTPS发起POST请求_node.js

准备用nodejs搞一个快速注册163邮箱的东西,需要在某一步的时候post数据到https,node的官方文档实在太简陋了,网上找了个差不多的例子,拿来改了改用. var util = require('util'), https = require('https'); var regUrl = "https://ssl.mail.163.com/regall/unireg/call.do;jsessionid=%s?cmd=register.start&adapter=%s&