


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!

ThesecrettokeepingaPHP-poweredwebsiterunningsmoothlyunderheavyloadinvolvesseveralkeystrategies:1)ImplementopcodecachingwithOPcachetoreducescriptexecutiontime,2)UsedatabasequerycachingwithRedistolessendatabaseload,3)LeverageCDNslikeCloudflareforservin

You should care about DependencyInjection(DI) because it makes your code clearer and easier to maintain. 1) DI makes it more modular by decoupling classes, 2) improves the convenience of testing and code flexibility, 3) Use DI containers to manage complex dependencies, but pay attention to performance impact and circular dependencies, 4) The best practice is to rely on abstract interfaces to achieve loose coupling.

Yes,optimizingaPHPapplicationispossibleandessential.1)ImplementcachingusingAPCutoreducedatabaseload.2)Optimizedatabaseswithindexing,efficientqueries,andconnectionpooling.3)Enhancecodewithbuilt-infunctions,avoidingglobalvariables,andusingopcodecaching

ThekeystrategiestosignificantlyboostPHPapplicationperformanceare:1)UseopcodecachinglikeOPcachetoreduceexecutiontime,2)Optimizedatabaseinteractionswithpreparedstatementsandproperindexing,3)ConfigurewebserverslikeNginxwithPHP-FPMforbetterperformance,4)

APHPDependencyInjectionContainerisatoolthatmanagesclassdependencies,enhancingcodemodularity,testability,andmaintainability.Itactsasacentralhubforcreatingandinjectingdependencies,thusreducingtightcouplingandeasingunittesting.

Select DependencyInjection (DI) for large applications, ServiceLocator is suitable for small projects or prototypes. 1) DI improves the testability and modularity of the code through constructor injection. 2) ServiceLocator obtains services through center registration, which is convenient but may lead to an increase in code coupling.

PHPapplicationscanbeoptimizedforspeedandefficiencyby:1)enablingopcacheinphp.ini,2)usingpreparedstatementswithPDOfordatabasequeries,3)replacingloopswitharray_filterandarray_mapfordataprocessing,4)configuringNginxasareverseproxy,5)implementingcachingwi

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl


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

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

Dreamweaver CS6
Visual web development tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

WebStorm Mac version
Useful JavaScript development tools
