【问题标题】:Problem with Joomla component - access to Joomla Framework from out of index.php contextJoomla 组件的问题 - 从 index.php 上下文中访问 Joomla 框架
【发布时间】:2011-09-02 11:24:09
【问题描述】:

您好,我有以下问题。组件的标准操作在 Joomla 中称为 index.php?option=com_name&action=MYACTION。然后我可以在我的组件中使用 Joomla 框架,例如用于数据库访问。 我正在为 3dsecure 网关开发组件。在付款的一个步骤中,我需要验证从银行发送的数据。所以我需要像index.php?option=com_name&action=validate 这样的东西。但是银行在此 URL 之后添加了另一个 ? 和更多参数,所以我认为它无法正常工作..所以我想从 3dsecure.mysite.com/validate.php 访问我的 Joomla 组件?这可能吗?

我只想使用JFactory::getDB,然后例如重定向到任何视图。我知道我可以使用 mysql_connect 并创建自己的数据库连接,但它非常难看:)

我能否以某种方式重定向我这边的请求(使用银行发送的参数创建有效的 url)?header(Location:)??

感谢您的帮助

【问题讨论】:

    标签: php joomla redirect joomla-extensions


    【解决方案1】:

    你不能在框架之外使用 Joomla! 的 api,除非你在那里提供所有需要的依赖项(从而在别处重新创建框架),这是非常无稽之谈。

    此外,您可以在组件 url 中有许多参数,这取决于组件路由器知道如何处理...因此,在组件的路由器类中,您将放置处理程序对于您需要的每个 $_GET 参数,例如从银行返回的参数。

    如果您只是不想弄脏 mysql_* 的东西,请使用 PDO(顺便说一句,这通常是一种更好的方法)。

    【讨论】:

    • 是的,我明白,我知道我可以有更多参数,但问题是指向我的组件正确操作的 url 存储在支付网关管理中,它已经包含一个问号和两个参数..所以银行方面的一些脚本在和参数之后添加了另一个问号..所以最好重定向到正确的joomla url,或者创建另一个数据库连接?
    【解决方案2】:

    考虑在服务器上使用重写规则。

    比如重写

    3dsecure.mysite.com/validate.php(...)

    进入

    index.php?option=com_name&action=MYACTION(...)

    如果您使用的是 Apache,则可以使用 mod_rewrite 来实现此目的。

    【讨论】:

    • 很遗憾,响应必须来自与查询相同的 URL:(
    • 没问题,这一切对客户端都是透明的。服务器仅重写 url 以供内部使用,因此它解析 index.php 而不是一些甚至不必存在的 validate.php。我建议您使用 Joomla 阅读有关 SEF 的一些信息。它可以帮助您更好地理解这个主题。
    • 哦,对不起,对我来说已经很晚了:你是对的,我可以将 url 从子域重写到更高级别的域吗?我想是的:) 所以这些东西我不太熟悉,所以我会看看这个并尝试学习它。谢谢你的帮助
    猜你喜欢
    • 1970-01-01
    • 2014-12-31
    • 2011-10-20
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 2013-04-03
    相关资源
    最近更新 更多