


Things to note when using PHP curl function to send Post requests
This article mainly introduces to you some precautions for using the curl function to send Post requests in PHP. The article introduces it in detail through sample codes and explanations. It has certain reference value for everyone to learn or use PHP. Friends who need it can follow the editor to learn.
Preface
I encountered a requirement at work a few days ago. When the user clicks a button, a post request is initiated in the background. Come to me, I accept the data passed over. At first, my colleague sent the message using the http_request()
method publically encapsulated by the company framework. The code is as follows:
public function http_request( $url, $post = '', $timeout = 5 ){ if( empty( $url ) ){ return ; } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); if( $post != '' && !empty( $post ) ){ curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($post))); } curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); $result = curl_exec($ch); curl_close($ch); return $result; }
At first I didn’t notice that the data passed was a json string encoded by application/json
. I directly accepted the application/x-www-form-urlencoded
encoding in the background. format data method to retrieve the passed data (that is, directly obtained using the $_POST
method), the result is of course nothing and nothing is retrieved. Later, my colleague directly changed the http_request()
method and directly passed the data in the application/x-www-form-urlencoded
encoding format, so I didn’t make any changes.
Regarding the above question, I have always wondered why I didn’t get the data passed at that time.
The project is basically completed today, and the following has been studied.
##curl() function in php When making a post request, the format of passing data can be in the following ways:
key=>valuekey-value pair string formed by concatenating parameters. The form is as follows:
name=xxx&age=23$sex=1
application/x-www-form-urlencoded by default .
key=>valuekey-value pair array composed of parameters (can only be a one-dimensional array, higher-dimensional arrays will report an error).
[ name="xxx" , age = 23 , sex = 男 ]
##The request parameter defaults to
format. As mentioned above,
When making a post request, only one-dimensional arrays can be passed as parameters. So what should be done if you want to pass multi-dimensional arrays?
(3): Process the multi-dimensional array with
http_build_query() and wait for a string in key=>value key-value pair format. As shown below:
$data = [ "msg"=>"这是一条测试数据", "xxx" => "yyyy", "msg_data" => [ "name"=>"sunms", "age"=>23, "sex"=>"男", "content"=>[ 1,2,3 ] ], ];
##The following string will be obtained:
msg=这是一条测试数据&xxx=yyyy&msg_data[name]=sunms&msg_data[age]=23&msg_data[sex]=男&msg_data[content][0]=1&msg_data[content][1]=2&msg_data[content][2]=3
This method is also coded through
application/x-www-form-urlencoded. The receiver can pass $_POST Get it directly.
(4): Convert the multi-dimensional array into a string in json format, encode the string in application/json
format, and pass
or $GLOBALS['HTTP_RAW_POST_DATA']
to obtain the passed json format string, and then convert the json format string into an array for processing.
$data = []; $data_string = json_encode($data); ..... //设置header信息 curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string)) );
Note:
For application/json format The encoded data, $_POST cannot be obtained directly, it needs to be obtained through file_get_contents("php://input")
or $GLOBALS['HTTP_RAW_POST_DATA']
way to obtain. The above is the entire content of this article, I hope it will be helpful to everyone's study.
php
Implementation method of loop traversal of one-dimensional arrayHow PHP and MYSQL implement paging navigation ideas
##php
array_reverse Detailed explanation of returning an array in reverse order
The above is the detailed content of Things to note when using PHP curl function to send Post requests. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.
