我为孩子们写了一些教育网络应用程序(HTML,js)。我已经到了需要开始逐个跟踪他们的进度的地步,因此应用程序可以更多地关注个人仍需要学习的内容,并花更少的时间重复他们已经熟悉的内容。
为此,我创建了一个Drupal站点,其中包含每个孩子的登录信息。一旦他们通过Drupal登录,我想让我的应用程序调用一些访问Drupal身份验证状态的php页面(我将编写)。
所以我的问题是,如果我正在编写查询或更新数据库的php页面,这些页面如何首先确定用户是否登录到该站点上的Drupal,如果是,请获取当前的名称认证用户?
非常感谢任何指示。
答案 0 :(得分:3)
使用此代码(取自Drupal的index.php)
开始您的页面define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
如果脚本与Drupal的index.php不在同一个文件夹中,则可能需要调整路径。
然后,您可以在脚本中完全访问Drupal API,并且将加载用户的会话。在上面的建议起作用之前,您需要使用此代码引导Drupal。从那里,你可以做到
global $user;
print_r($user);
现在你可以做以下事情:
$other_user = user_load($some_user_id);
从长远来看,你可以通过将其构建为Drupal模块获得很多好处。
答案 1 :(得分:2)
我认为从PHP脚本创建Drupal模块更容易。您不必担心身份验证。只是我的观点。
答案 2 :(得分:2)
您可以使用services module
集成外部应用程序的标准化解决方案 Drupal的。服务回调可以与多个接口一起使用 REST,XMLRPC,JSON,JSON-RPC,SOAP,AMF等。这允许Drupal 站点使用时通过多个接口提供Web服务 相同的回调代码。
<强>更新强>
如果是这种情况,您可以在drupal中编写代码。无需外部应用程序。
要查找当前登录的用户,请使用以下代码示例:
global $user;
print_r($user); // print out the user object
希望这有帮助......穆罕默德。
答案 3 :(得分:1)
此问题的答案如下:Drupal - using boostrap to check logged in user outside of Drupal not working
引导代码有效,您只需在settings.php中设置$ cookie_domain
答案 4 :(得分:0)
这个文件应该在drupal安装里面 很容易
//set the working directory to your Drupal root
define("DRUPAL_ROOT", "/var/www/drupal/");
//require the bootstrap include
require_once 'includes/bootstrap.inc';
//Load Drupal
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
//(loads everything, but doesn't render anything)
$name = 'admin';
$password = 'admin';
//use drupal user_authenticate function
if(!user_authenticate($name, $password)){
echo 'invalid';
}else{
echo 'valid';
}