2

我的任务是编写一个相对较小且简单的 PHP Web 应用程序,它将使用一个小型数据库。对此的身份验证将通过查询字符串中随机生成的十六进制密钥进行,这些密钥由管理页面生成并通过电子邮件发送给所需的用户。

到目前为止一切都很好,但这里有一个问题:

由于各种政治原因,我们被迫将此应用程序制作为 Moodle 模块。我可以在 MySQL 中使用 Moodle 数据库,但我将使用我自己的不与 Moodle 交互的表,并且 Moodle 不会与我的表交互。我还必须使用 Moodle 数据库抽象而不是直接 PHP-> MySQL 访问。

我不希望我的用户知道他们在 Moodle 中操作。他们不应该需要登录 Moodle 来访问我的网络应用程序,而且他们可能无论如何都无法访问 Moodle。那些有权访问 Moodle 的用户不应该在他们的 Moodle 功能列表中看到这个网络应用程序。

我整理了一些小的 PHP 页面,包括了一些 Moodle 库,并将代码放在了 moodle/mods 目录中。使用 URL 直接访问服务器上的 PHP 页面会导致 Moodle 错误,因为我没有通过适当的渠道访问该模块。我收到“检测到不正确的访问”错误。

我的任务是可能做的吗?如果是这样,实现它的最佳方法是什么?我需要编写一个身份验证模块,然后是一个活动模块吗?有什么方法可以绕过 Moodle 的所有身份验证,只需使用数据库抽象而不编辑核心 Moodle 配置文件?(我知道可以通过修改 Moodle 代码,但遗憾的是这不是一个选项)。

我有丰富的 PHP 经验,但我只有大约 4 小时的 Moodle 经验,而且我的速度也很慢。

4

2 回答 2

0

不太确定您要在这里实现什么,但以下任何一种方法都可能有效。

(1) 如果您有一个想要在 LMS 框架中交付的独立平台,那么您可能会提出一个相反的建议,即在您喜欢的环境中开发它,但将它包装在LTI中。然后,Moodle 可以通过外部工具插件交付它,您可以获得两者之间的双向通信以进行身份​​验证和跟踪。

(2) 在 Moodle 中做

使用login_hook创建身份验证,并确保将其移至身份验证插件列表的顶部,以便在其他插件之前首先对其进行检查。使用钩子处理十六进制键(作为 GET 或 POST 参数)或带您到备用进程并返回 true(或创建会话)。您还可以在此插件挂钩旁边的身份验证设置中使用“替代登录页面”。这应该进行身份验证。

如果注册不是问题,则将您的插件创建为本地插件(而不是 mod),并在登录后使用上述挂钩重定向到此页面。这为您使用的库提供了更多的灵活性,并且您仍然可以在必要时使用首页注册作为解决方法。如果您确实需要注册、课程角色和成绩簿,请使用 mod 来利用这些。最新的 Moodle 中有一个单一的活动课程格式,它为您提供了一种单独运行您的定制活动的格式。

最后在主题中为本地插件开发您自己的布局类型(如果使用该插件)或课程和课程布局(如果使用课程),以便您可以控制您想要的标准 Moodle 导航和结构。

如果插件正在共享已用于其他活动的 Moodle,那么您需要对此敏感。如果你只是运行自己的东西,那么它会容易得多。

(3) 在自己的 App 中使用Web 服务从 Moodle 中获取你想要的东西。

于 2014-06-28T00:48:10.077 回答
0

在我看来,您可能正试图在从除了贵宾犬在其配置文件中指定的主机之外的主机进入时访问脚本。你可以试着把你的 http_host 和面条 wwwroot 转储,看看是否排队。我对 2 比 1.9 不太熟悉,但是您可能能够定义 abort_after_config 然后包含配置然后更改 cfg wwwroot 然后定义 abort_after_config_cancel 然后包含设置。否则你可以欺骗主机,否则你可以删除 Tue lib/setup.pup 文件中的检查

于 2011-08-13T06:08:21.727 回答