Curl-如何在WordPress中发送和获取数据

时间:2018-02-07 作者:murcoder

BACKGROUND

在域1上的用户单击指向域2的链接后,我需要send also the user-data (username,email,..) from server1/domain1 to server2/domain2 并将其临时保存在server2/数据库中。

两者都是wordpress网站。

CURRENT WORK

比如说,$url = \'http://my-domain2.com\';到目前为止,我发现cURL可以做这项工作:

function curlTest($url, $fields){

  try{

      $ch = curl_init($url);

      if (!$ch)
        throw new Exception(\'Failed to initialize\');

      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, \'PUT\');
      curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , 10);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_HTTPHEADER, array(\'Content-Length: \' . strlen($fields)));
      curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
      $response = curl_exec($ch);

      $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

      if (!$response)
        throw new Exception(curl_error($ch), curl_errno($ch));


      curl_close( $ch );
      return (int) $status; //status 200 = success


      } catch(Exception $e) {

          trigger_error(sprintf(
              \'Curl failed with error #%d: %s\',
              $e->getCode(), $e->getMessage()),
              E_USER_ERROR);

      }
}
或像描述的那样以客观为导向here.

后来我发现wordpress solution 像这样:

 $response = wp_remote_post( &url, array( \'data\' => $fields) );
已解释here.

cURL调用似乎成功了,但我不知道如何在另一台服务器上获取数据。到目前为止,我将server1上的用户数据放在一个数组中($字段),并使用POST将其发送到server2。但是how can I fetch the data 在服务器2上?

根据下面的Ed Cradock示例offical documentation 似乎可以使用以下代码在另一端绘制请求:

   if($_SERVER[\'REQUEST_METHOD\'] == \'PUT\') 
    { 
       parse_str(file_get_contents(\'php://input\'), $requestData); 

       print_r($requestData); 

       // Save requested Data to database here
    } 
但它对我不起作用,因为我猜URL是错误的:http://my-domain2.com/<whats-here?>

QUESTION

如何使用wordpress以安全的方式获取POST cURL请求的数据?

2 个回复
最合适的回答,由SO网友:Maxim Sarandi 整理而成

wp_remote_get()wp_remote_post()wp_remote_request() 你应该回答你的问题。这是WordPress的最佳实践。

SO网友:Mark Kaplun

wp_remote_post, 比直接调用curl更好的方法是向另一端发送POST请求,这意味着您可以使用$_POST 全球的没有理由或需要使用PUT请求来完成您正在做的事情。

结束