Comment envoyer des données utilisateur au format JSON à un autre serveur lorsque l'utilisateur s'enregistre sur un site wordpress en PHP. J'ai une URL de serveur est comme ( http://1.2.3.4:49005/SingleMethodName=DomainManagementStripeService___DomainRegistration )
lorsque l'utilisateur s'inscrit sur le site wordpress, je souhaite envoyer son nom, son courrier électronique et ses champs personnalisés à son serveur au format JSON. Merci
Édité ----- J'utilise mu-plugins à cette fin et voici le code que je l'utilise pour
<?php
add_action('init', 's2_payment_notification');
function s2_payment_notification()
{
if( isset($_POST['user_id'], $_POST['subscr_id'], $_POST['user_ip'],$_POST['user_piva']))
{
$user_id = (integer)$_POST['user_id'];
$subscr_id = (string)$_POST['subscr_id'];
$user_ip = (string)$_POST['user_ip'];
$user_piva = (integer)$_POST['user_piva'];
$s2member_subscr_id = get_user_option('s2member_subscr_id', $user_id);
$s2member_registration_ip = get_user_option('s2member_registration_ip', $user_id);
$s2member_p_iva_fisc = get_user_option('p_iva_fisc', $user_id);
$user_piva = wp_json_encode($s2member_p_iva_fisc);
$user_ip = wp_json_encode($s2member_registration_ip);
$subscr_id = wp_json_encode($s2member_subscr_id);
wp_remote_post('http://1.2.3.123:49005/SingleMethodName=DomainManagementStripeService___DomainRegistration', [
'headers' => ['content-type' => 'application/json'],
'body' => array(
'User_Id' => '$user_id',
'subscr_id' => '$subscr_id',
'user_ip' => '$user_ip',
'user_piva' => '$user_piva'
),
]);
}
else {
wp_remote_post('http://1.2.3.123:49005/SingleMethodName=DomainManagementStripeService___DomainRegistration', [
'headers' => ['content-type' => 'application/json'],
'body' => 'Everything is empty',
]);
}
}
Pour ce faire, le moyen le plus simple consiste à utiliser le hook d’action register_user
qui se déclenche immédiatement après l’ajout d’un utilisateur à la base de données. Il transmet une variable aux callbacks, $user_id
, qui peut être utilisée pour wp_safe_remote_post()
.
namespace StackExchange\WordPress;
function register_user( $user_id ) {
$url = 'https://example.com';
$args = [
'user_id' => $user_id,
];
\wp_safe_remote_post( $url, $args );
}
\add_action( 'register_user', __NAMESPACE__ . '\register_user' );
Envoi et réception de données au format JSON à l'aide de la méthode POST
xhr = new XMLHttpRequest();
var url = "url";
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-type", "application/json");
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var json = JSON.parse(xhr.responseText);
console.log(json.email + ", " + json.password)
}
}
var data = JSON.stringify({"email":"[email protected]","password":"101010"});
xhr.send(data);
Envoi de données de réception au format JSON à l'aide de la méthode GET
xhr = new XMLHttpRequest();
var url = "url?data=" + encodeURIComponent(JSON.stringify({"email":"[email protected]","password":"101010"}));
xhr.open("GET", url, true);
xhr.setRequestHeader("Content-type", "application/json");
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var json = JSON.parse(xhr.responseText);
console.log(json.email + ", " + json.password)
}
}
xhr.send();
Gestion des données au format JSON côté serveur à l'aide de PHP
// Handling data in JSON format on the server-side using PHP
header("Content-Type: application/json");
// build a PHP variable from JSON sent using POST method
$v = json_decode(stripslashes(file_get_contents("php://input")));
// build a PHP variable from JSON sent using GET method
$v = json_decode(stripslashes($_GET["data"]));
// encode the PHP variable to JSON and send it back on client-side
echo json_encode($v);