2

我为我的孩子编写了一些教育网络应用程序(HTML、js)。我已经到了需要开始单独跟踪他们的进度的地步,因此应用程序可以更多地关注个人仍然需要学习的内容,并花更少的时间重复他们已经熟悉的内容。

为此,我创建了一个 Drupal 站点,每个孩子都可以登录。一旦他们通过 Drupal 登录,我想让我的应用程序调用一些访问 Drupal 身份验证状态的 php 页面(我将编写)。

所以我的问题是,如果我正在编写查询或更新数据库的 php 页面,这些页面如何首先确定用户是否在该站点上登录了 Drupal,如果是,则获取当前经过身份验证的用户的名称?

非常感谢您的任何指点。

4

5 回答 5

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 模块中获得很多好处。

于 2012-11-01T16:25:14.690 回答
2

我认为从 PHP 脚本创建 Drupal 模块更容易。那时您不必担心身份验证。只是我的观点。

于 2012-11-01T08:09:43.870 回答
2

您可以使用服务模块

将外部应用程序与 Drupal 集成的标准化解决方案。服务回调可以与多个接口一起使用,例如 REST、XMLRPC、JSON、JSON-RPC、SOAP、AMF 等。这允许 Drupal 站点通过多个接口提供 Web 服务,同时使用相同的回调代码。

更新:

如果是这种情况,您可以在 drupal 中编写代码。无需外部应用程序。

要找出当前登录的用户,请使用以下代码示例:

global $user;
print_r($user); // print out the user object

希望这会有所帮助……穆罕默德。

于 2012-11-01T08:11:13.847 回答
1

这个问题的答案在这里:Drupal - using boostrap to check login user outside of Drupal not working

引导代码有效,您只需要在 settings.php 中设置 $cookie_domain

于 2013-12-21T12:08:10.100 回答
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';
}
于 2013-06-25T05:31:08.823 回答