Submitted by cyberkate on
Bonjour,
Sur un serveur (serveur 1), je dispose de Drupal et sur un autre (serveur 2), il y a une autre application PHP.
Pour des raisons techniques, les deux applications ne peuvent fonctionner sur le même serveur.
Or, j'aimerais lier l'application depuis l'interface Drupal. De plus, j'aimerais récupérer le nom de l'utilisateur sur cette application.
Cependant, si je mets le code suivant sur le serveur 2 et que j'y accède depuis Drupal, le nom de l'utilisateur est vide :
<?php
global $user;
$echo $user->name;
?>
Comment pourrais-je récupérer ce nom d'utilisateur ?
Merci d'avance.
@+
Ca dépend de la complexité
Permalien Soumis par Damien Tournoud le 20 Juillet, 2006 - 14:25
Ca dépend de la complexité de ce que tu souhaites faire. Basiquement, si j'ai bien compris, l'architecture est la suivante:
Client <--> Serveur 1 (Drupal) <--> Serveur 2
Lorsque le client fait une requête, le serveur 1 appelle un page sur le serveur 2. Donc en fait, fondamentalement, Serveur 1 est le client de Serveur 2: si tu veux que Serveur 2 ai accès à des données de Serveur 1, il faut donc lui les fournir (en GET ou en PUT). Par exemple, en GET cela peut donner la requête suivante:
http://server2/monappli.php?user=($user->uid)
Si tu veux quelque chose de plus compliqué, avec des requêtes possibles dans les deux sens, le plus simple et efficace est d'exporter des fonctions sur le Serveur 1 en XML-RPC. Ca se fait très bien avec Drupal (il y a un hook spécialisé la dedans). Ainsi le Serveur 2 pourra faire des requêtes sur le Serveur 1 en retour.
Merci beaucoup pour ta
Permalien Soumis par cyberkate le 20 Juillet, 2006 - 15:06
Merci beaucoup pour ta réponse.
La première possibilité me semble plus simple dans la mesure où je n'ai jamais utilisé XML-RPC.
Tu as bien compris ma requête mais je me pose une question :
si je choisis la première méthode avec GET par exemple, comment garantir que l'utilisateur vient bien de drupal. Car je dois bien évidemment faire passer le nom de l'utilisateur en paramètre. Mais quel autre paramètre (surement codé) pourrais-je utiliser afin de garantir la provenance réelle depuis drupal ?
Merci d'avance. :)
A priori, le plus simple est
Permalien Soumis par Damien Tournoud le 20 Juillet, 2006 - 15:38
A priori, le plus simple est de restreindre l'accès au serveur 2 aux requêtes provenants de serveur 1. Par exemple, vérifier que l'adresse IP du client est bien celle de serveur 1.