我的任务是编写一个相对较小和简单的PHP web应用程序,它将使用一个小型数据库。对此的身份验证将通过查询字符串中随机生成的十六进制密钥进行,这些十六进制密钥由管理页生成,并通过电子邮件发送给所需用户。
到目前为止,这一切都很好,但这里有一个问题:
出于各种政治原因,我们被迫将这个应用程序作为Moodle模块。我可以在MySQL中使用Moodle数据库,但是我将使用我自己的表,这些表不与Moodle交互,Moodle也不会与我的表交互。我还必须使用Moodle数据库抽象,而不是直接使用PHP->MySQL访问。
我不想让我的用户知道他们在Moodle内操作。他们不应该需要登录到Moodle来访问我的web应用程序,而且他们可能也无法访问Moodle。那些能够访问Moodle的用户不应该在Moodle功能列表中看到这个web应用程序。
我收集了几个PHP页面,包括一些Moodle库,并将代码放在moodle/mods目录中。使用URL访问服务器上的PHP页面直接导致Moodle错误,因为我没有通过适当的通道访问模块。我得到“不正确的访问检测”错误。
我受命做的事有可能吗?如果是的话,如何才是实现这一目标的最佳途径?是否需要编写身份验证模块,然后编写活动模块?有没有办法绕过Moodle的所有身份验证,只使用数据库抽象而不编辑核心Moodle配置文件?(我知道修改Moodle代码是可能的,但遗憾的是,这不是一个选择)。
我有大量的PHP经验,但我只有大约4个小时的Moodle经验,我没有任何进展。
发布于 2011-08-13 06:08:21
在我看来,您可能是在尝试从主机访问脚本,而不是在它的配置文件中指定了什么。你可以试着甩掉你的http_host和面条,看看是否排队。我不太熟悉2,而不是1.9,但是您可能能够定义abort_after_config,然后包含配置,然后更改cfg,然后定义abort_after_config_cancel,然后包含安装程序。否则,您可以欺骗主机,否则可以删除Tue lib/setup.pup文件中的检查。
发布于 2014-06-28 00:48:10
不太确定你想在这里实现什么,但以下任何一项都可能有效。
(1)如果您有一个独立的平台,您希望在LMS框架内交付,那么您可能会提供一个反建议,即在您喜欢的环境中开发它,但将其封装在LTI中。Moodle然后可以通过外部工具插件交付它,您可以获得两者之间的双向通信,以进行身份验证和跟踪。
(2)用Moodle语言做
使用钩子创建一个身份验证,并确保它被移动到身份验证插件列表的顶部,以便在其他插件列表之前先检查它。使用钩子来处理十六进制键(作为GET或POST参数),或者带您到另一个进程并返回true (或创建会话)。您还可以在此插件钩子旁边使用身份验证设置中的“备用登录页”。这应该是身份验证。
如果注册不是一个问题,那么创建您的插件作为本地插件(不是mod),并使用上述钩子重定向到本页面登录后。这使您在使用的库中有了更大的灵活性,如果有必要,您仍然可以使用头版注册作为解决办法。如果您确实需要注册,课程角色,和年级簿,然后使用一个模块来利用这些。在最新的Moodle中有一个单一的活动课程格式,它为您提供了一个单独运行定制活动的格式。
最后,在主题中为本地插件开发您自己的布局类型(如果使用该插件),或者为课程开发布局,如果使用课程,那么您可以控制您想要的标准Moodle导航和结构。
如果插件正在共享一个已经用于其他活动的Moodle,那么您将需要对此非常敏感。如果你只是在经营你自己的事情,那就容易多了。
(3)使用Web服务从你自己的应用程序中获得你想要的东西。
https://stackoverflow.com/questions/6530084
复制相似问题