drupal - 如何在不使用 API 的情况下向 Drupal 6.x 注册用户?

标签 drupal drupal-6 drupal-modules

我们必须有一个通过 Web 服务可用的“注册”方法,该方法是用 java 编写的,因此从今往后我们无法访问 Drupal API。但我们需要能够成功注册用户。简单地将用户添加到用户表中是不行的,因为新创建的用户永远无法成功登录。我再次喜欢 Drupal API,并且总是使用它,因为这是“正确”的方法,但在这种情况下,我们只是没有能力这样做。对这个困境有什么见解吗?

最佳答案

您需要单步执行 user_save() API 函数可帮助您了解 Drupal 在创建新用户时执行的操作。

Drupal 在保存此类数据方面并没有什么深奥的魔力:它都在数据库中。因此,虽然不能使用 Drupal API 并不理想,但您实际上只处理两个数据库插入:{user} 表插入(您已经完成了)和{users_roles} 表插入。

根据您的信息,我怀疑缺少的链接是您没有向新用户 UID 的 {users_roles} 表中添加行。 user_save() 中的相关行:

db_query('INSERT INTO {users_roles} (uid, rid) VALUES (%d, %d)', $account->uid, $rid);

其中,$account->uid 是新创建用户的 UID,$rid 是您要授予用户的角色 ID。新用户至少需要经过身份验证的用户角色。

user_save() 中的其他内容主要是健全性检查(user_save() 除了创建新用户之外还处理更新用户)和钩子(Hook)触发,您可能会这样做无需担心此用例。

关于drupal - 如何在不使用 API 的情况下向 Drupal 6.x 注册用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3509342/

相关文章:

php - 在 PHP 中用于加密/解密的 Mcrypt 替代品?

javascript - Drupal 表单无法访问 javascript 函数(错误 "not a function")

email - 发送带附件的电子邮件

Drupal 站点中的 jQuery addClass() 函数在 IE7 中不起作用

php - 如何仅允许特定用户查看 Drupal 中内容类型的特定字段?

php - Drupal-6:为什么这个节点不保存?

Drupal 和 PHP 5.3

drupal - 更改 Drupal 表单中字段的值

drupal-7 - Drupal 7 表单 API : Set visible state of form element based on OR instead of AND

php - 德鲁帕尔 6 : Make custom function available to different modules