web-dev-qa-db-fra.com

Comment envoyer des données utilisateur au format JSON à un autre serveur lorsque l'utilisateur s'enregistre sur le site wordpress de PHP

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',
        ]);
    }

}
1
khan

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' );
2
Nathan Johnson

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":"hey@mail.com","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":"hey@mail.com","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);
2
Abhishek Pandey