php利用curl提交数据(POST提交)

思路就是:先把要提交的数据组织起来,然后在调用post的方法

先贴上post的方法:

function request_post($url = '', $param = '') {
    if (empty($url) || empty($param)) {
        return false;
    }

    $postUrl = $url;
    $curlPost = $param;
    $ch = curl_init();//初始化curl
    curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定网页
    curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
    curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
    curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
    $data = curl_exec($ch);//运行curl
    curl_close($ch);

    return $data;
}

现在演示一个例子:需求就是要将参数提交到一个页面上,在进入到页面的时候有个方法会进行过滤,验证你提交的数据是否正确,如果验证成功就会将数据提交到页面并返回页面的内容:

$http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';//判断地址的超文本传输协议
$pay_notifyurl = $http_type . $_SERVER['HTTP_HOST'] . "/demo/server.php";   //服务端返回地址
$url = $http_type . $_SERVER['HTTP_HOST'] . "/Pay_Index.html";//post地址
//下面是要提交的数据 存放到数组post_data
$post_data['pay_orderid']       = $_POST["orderid"];//订单号
$post_data['pay_amount']      = $_POST["amount"];//订单金额
$post_data['pay_bankcode'] = $_POST["channel"];//通道编码
$post_data['pay_memberid']    = '10004';//商户号
$post_data['pay_notifyurl'] = $pay_notifyurl;//回调地址
$post_data['pay_applydate'] = date("Y-m-d H:i:s");//提交时间

ksort($post_data);//将参数进行升序排序
$md5str = "";
foreach ($post_data as $key => $val) {
    $md5str = $md5str . $key . "=" . $val . "&";
}
$Md5key = "mnm7hqrksy0h5l0i0bylgnj0oy3h8djx";
$sign = strtoupper(md5($md5str . "key=" . $Md5key));//生成签名
$post_data["pay_md5sign"] = $sign;
$o = "";
foreach ( $post_data as $k => $v )
{
    $o.= "$k=" . urlencode( $v ). "&" ;
}
$post_data = substr($o,0,-1);

$res = request_post($url, $post_data);//调用提交方法的函数

var_dump($res);

欢迎交流!

猜你喜欢

转载自blog.csdn.net/zhangzeshan/article/details/88577162