cURL - Come inviare e recuperare dati in WordPress
CONTESTO
Dopo che l'utente su domain1 clicca un link verso domain2, ho bisogno di inviare anche i dati utente (username, email,..) dal server1/domain1 al server2/domain2 e salvarli temporaneamente nel database del server2.
Entrambi sono siti WordPress.
LAVORO ATTUALE
Diciamo che $url = 'http://my-domain2.com'
;
Finora ho scoperto che cURL può fare questo lavoro:
function curlTest($url, $fields){
try{
$ch = curl_init($url);
if (!$ch)
throw new Exception('Inizializzazione fallita');
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 = successo
} catch(Exception $e) {
trigger_error(sprintf(
'Curl fallito con errore #%d: %s',
$e->getCode(), $e->getMessage()),
E_USER_ERROR);
}
}
o orientato agli oggetti come descritto qui.
Successivamente ho trovato una soluzione WordPress come questa:
$response = wp_remote_post( $url, array( 'data' => $fields) );
spiegata qui.
La chiamata cURL sembra avere successo, ma non ho idea di come recuperare i dati sull'altro server. Finora ho messo i dati utente sul server1 in un array ($fields) e uso POST per inviarli al server2. Ma come posso recuperare i dati sul server2?
Secondo l'esempio di Ed Cradock sotto la documentazione ufficiale sembra essere possibile catturare la richiesta sull'altro lato con questo codice:
if($_SERVER['REQUEST_METHOD'] == 'PUT')
{
parse_str(file_get_contents('php://input'), $requestData);
print_r($requestData);
// Salva i dati richiesti nel database qui
}
Ma non funziona per me perché suppongo che l'URL sia sbagliato: http://my-domain2.com/<cosa-qui?>
DOMANDA
Come recuperare i dati di una richiesta POST cURL con WordPress in modo sicuro?

wp_remote_get(), wp_remote_post() e wp_remote_request() dovrebbero rispondere alle tue domande. Questa è la pratica migliore per WordPress.

wp_remote_post
, che è preferibile utilizzare rispetto alla chiamata diretta di curl, invia una richiesta POST all'altro lato, il che significa che puoi semplicemente recuperarla con la variabile globale $_POST
. Non c'è alcuna ragione o necessità di utilizzare richieste PUT per quello che stai facendo.

Grazie! Ho già fatto molte ricerche, ma non riesco a trovare un esempio su come recuperare i dati dall'altro server. Come posso ascoltare su server2 i dati provenienti da server1? Immagino di dover scrivere la mia API? C'è della documentazione? Semplicemente if($_POST['username']){ //fai qualcosa} non funzionerà, immagino
