Php 具有多个参数的URL的DOMDocument::CreateElements

Php 具有多个参数的URL的DOMDocument::CreateElements,php,saml,suitecrm,Php,Saml,Suitecrm,包正在使用这个DOMDocument::createElements,但是当namespaceURI中有多个参数时,它就会崩溃 网址 https://suitecrm_dev.com/index.php?action=Login&module=Users 它只适用于URL https://mautic_dev.com/s/saml/login_check 在提供的示例的官方文档中,URL中没有参数 因此,这里的问题是如何正确发送URL,以使DOMDocument::CreateElements不

包正在使用这个DOMDocument::createElements,但是当
namespaceURI
中有多个参数时,它就会崩溃

网址

https://suitecrm_dev.com/index.php?action=Login&module=Users

它只适用于URL

https://mautic_dev.com/s/saml/login_check

在提供的示例的官方文档中,URL中没有参数

因此,这里的问题是如何正确发送URL,以使DOMDocument::CreateElements不会出现以下错误:

DOMDocument::createElementNS():未终止的实体引用模块=用户

导致问题的lightSAML中的行:

是的,我已经在LightSAML和SuiteCRM中提出了一个问题,但没有结果,我也在这里发布了一个问题,但决定提出一个新的问题,指出导致所有这些问题的原因。

URI
s而不是
URL
s

https://suitecrm_dev.com/index.php?action=Login&module=Users
是一个
URL
。它定位一个资源,而:

https://mautic_dev.com/s/saml/login_check
是标识资源的
URI
。资源的物理位置可以是任何地方,甚至是
URL
中完全不同的域

SAML
core只处理身份<代码>SAML元数据处理身份的位置。尽管可以将参数编码到URI中,但不鼓励这样做:

因为URI之间可能存在混淆的风险,而URI是等效的 如果取消引用,则不允许在命名空间名称中使用转义字符 非常气馁


<> P> >最好考虑哪一个实体(标识):<代码> DOMBONT::CREATETELMENTSNS 代表而不是信息将在哪里结束(位置)。

根据错误消息,它认为<代码>模块>代码>是一个实体的名称,但没有找到终止<代码>;代码>需要的代码。尝试将
&
编码为
&
@CBroe是的,这确实消除了错误,但SSO仍然失败,尽管我认为这是因为URI,但这是另一个主题。@帮助我解决这个问题的CBroe必须做大量挖掘,以找到哪些函数正在使用该URL,并相应地更新它们。谢谢我明白了,但问题是SuiteCRM没有为SAML指定任何URI,我读过的大多数文档都使用
https://suitecrm_dev.com/index.php?action=Login&module=Users
这本身就很奇怪,因为这是登录页面。您要将名称空间添加到哪个SAML元素?您可以在构建响应时看到它的目标。您遇到问题的是名称空间还是目标属性值?在某种意义上,这两者都是因为您在链接中找到的目标URL也是lightsaml函数中使用的名称空间URI。但我现在设法解决了这个问题,方法是对URL进行编码,并在将URL用于目标链接时进行str_替换以使其工作。这不是一个很好的解决方案。