TYPO3 8.7/9.5 pibase $_POST 不可用?
TYPO3 8.7/9.5 pibase $_POST not available?
我正在修改一些旧的 typo3 项目扩展。问题是我们必须保留那个 pibase 结构,因为它无论如何都受核心支持。因此该扩展执行一些简单的 CRUD 操作,在我的例子中是基于通过 $_POST 提交的值的插入。所以旧的扩展只是直接使用 $_POST 不再支持,我猜是因为 PSR-7 Request/Response 实现。
但是现在我如何访问提交的值,因为 $_POST 不再可用而且我也没有 $this->request 因为扩展扩展了 AbstractPlugin。
编辑:
我们也不在 main() 里面
代码块在 sendMail()
内
我也不知道 sendMail 是从哪里调用的,因为没有 pibase 的可用文档。
非常感谢帮助
您可以使用 \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('name')
访问 GET 和 POST 参数
但出于安全原因,可能会被过滤掉。
我们有 cHashes 的概念,它可以保护站点免受注入参数的侵害。所有参数都必须是已知的,并由散列来保护。 TYPO3 通过 cHash 来记忆参数。如果给出了 cHash,则从数据库中获取参数并忽略提供给服务器的参数。
对于表单(如 ext:form
或 ext:powermail
),没有生成 cHashes,可以处理表单的字段。
如果您有 'naked' 个表单和纯 php 文件要处理,您应该更改为表单扩展,您可以在其中使用现有的完成器并可以添加额外的完成器(和验证器),对于这些修整器,表单数据是安全的,不会被注入,您不需要访问 $_GET
或 $_POST
。
编辑:
这里是 question/answer 如何禁用单一形式值的 cHash 计算:
我正在修改一些旧的 typo3 项目扩展。问题是我们必须保留那个 pibase 结构,因为它无论如何都受核心支持。因此该扩展执行一些简单的 CRUD 操作,在我的例子中是基于通过 $_POST 提交的值的插入。所以旧的扩展只是直接使用 $_POST 不再支持,我猜是因为 PSR-7 Request/Response 实现。
但是现在我如何访问提交的值,因为 $_POST 不再可用而且我也没有 $this->request 因为扩展扩展了 AbstractPlugin。
编辑: 我们也不在 main() 里面 代码块在 sendMail()
内我也不知道 sendMail 是从哪里调用的,因为没有 pibase 的可用文档。
非常感谢帮助
您可以使用 \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('name')
但出于安全原因,可能会被过滤掉。
我们有 cHashes 的概念,它可以保护站点免受注入参数的侵害。所有参数都必须是已知的,并由散列来保护。 TYPO3 通过 cHash 来记忆参数。如果给出了 cHash,则从数据库中获取参数并忽略提供给服务器的参数。
对于表单(如 ext:form
或 ext:powermail
),没有生成 cHashes,可以处理表单的字段。
如果您有 'naked' 个表单和纯 php 文件要处理,您应该更改为表单扩展,您可以在其中使用现有的完成器并可以添加额外的完成器(和验证器),对于这些修整器,表单数据是安全的,不会被注入,您不需要访问 $_GET
或 $_POST
。
编辑:
这里是 question/answer 如何禁用单一形式值的 cHash 计算: