我们需要提供一个简单的类似REST的Web服务接口,用于与第三方网站进行通信:
远程致电我们:
https:/www.oursite.com/user/{ID}/logged_on
返回远程站点:
"YES" | "NO"
Web服务应该能够:
ID
)我是否需要为此目的编写自定义模块?
答案 0 :(得分:4)
我推荐Services模块。
设置完毕后,您可以拨打远程电话,例如:
http://www.example.com/my_services_path/system/connect http://www.example.com/my_services_path/system/connect.json
这将返回XML(或JSON),指示当前用户是否已登录。您需要解析返回的结果以查看用户对象结果。
要检查某个UID是否已登录,您需要启用“用户 - >检索'资源,然后你可以打电话,例如:
http://www.example.com/my_services_path/user/1 http://www.example.com/my_services_path/user/1.json
这将返回XML(或JSON)中的Drupal用户对象。
据我所知,它不包含指示用户是否已登录的变量。它确实包含他们的上次登录时间,状态等。
您可能需要通过模块中的hook_user“load”操作进行一些自定义,以附加自定义变量,例如: $ user-> is_logged_in并动态设置其值。然后'用户 - >检索'服务调用将包含该变量。
现在我写了这个答案,我看到你想要一个纯文本的结果,doh!那么,我会推荐@zeroFiG的答案。
答案 1 :(得分:3)
你需要自己的模块,你应该把它放在:
function MODULENAME_menu() {
$items = array();
$items['user/%/logged_on'] = array(
'title' => 'Ajax Dessins',
'page callback' => 'MODULENAME_check_user_status',
'page arguments' => array(1),
'access callback' => TRUE,
'type' => MENU_CALLBACK
);
return $items
}
function MODULENAME_check_user_status($uid) {
// Do the lookup / checking
// and then something like:
echo $result;
exit();
}
将“MODULENAME_”替换为您的模块名称,这应该可以解决问题。这假设您有Drupal 6.它应该与drupal 5/7相似;唯一的区别在于菜单声明。
答案 2 :(得分:1)
尝试使用此功能drupal_http_request。是的,您必须编写自定义模块并调用此功能。