【问题标题】:TYPO3 8.7/9.5 pibase $_POST not available?TYPO3 8.7/9.5 pibase $_POST 不可用?
【发布时间】:2020-06-02 09:26:29
【问题描述】:

我正在修改一些旧的typo3 项目扩展。问题是我们必须留在那个 pibase 结构上,因为无论如何它都是由核心支持的。因此该扩展程序会执行一些简单的 CRUD 操作,在我的情况下是基于通过 $_POST 提交的值的插入。所以旧的扩展直接使用了 $_POST ,这不再受支持,我猜是因为 PSR-7 请求/响应实现。

但是现在我如何访问提交的值,因为 $_POST 不再可用并且我也没有 $this->request 因为扩展扩展了 AbstractPlugin。

编辑: 我们也不在 main() 里面 代码块在 sendMail() 中

我也不知道是从哪里调用 sendMail,因为没有可用的 pibase 文档。

非常感谢您的帮助

【问题讨论】:

  • piBase 中的 $piVars 中不是 $_get 和 $_post 吗? api.typo3.org/master/…
  • 你们也这么想,但是 $this->piVars 一直是空的

标签: typo3 typo3-9.x typo3-8.x pibase


【解决方案1】:

您可以使用\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('name') 访问 GET 和 POST 参数

但出于安全原因,可能会被过滤掉。

我们有 cHash 的概念,它可以保护站点免受注入参数的影响。所有参数都必须是已知的,并由散列保护。 TYPO3 通过 cHash 记住参数。如果给定了 cHash,则从数据库中获取参数并忽略给服务器的参数。

对于表单(如ext:formext:powermail),不会生成 cHash,并且可以处理表单的字段。

如果您有“裸”表单和纯 php 文件要处理,您应该更改为表单扩展,您可以在其中使用现有的完成程序并可以添加额外的完成程序(和验证程序),对于这些完成程序,表单数据是安全的反对注入,您不需要访问$_GET$_POST

编辑:
这是一个问题/答案如何禁用单个表单值的 cHash 计算:TYPO3 - Deactivating cHash in own extension - 8LTS

【讨论】:

  • 在我的例子中,它是一个 tx_pluginName_pi1.php 文件,用于带有 main() 和 sendMail() 的逻辑,res/template.html 用于模板,等等……模板包含一个普通的
    。我理解你的回答,但它似乎不是更大规模重构的选择,所以我对“...lUtility::_GP('name')”有什么选择?因为这个和 "...lUtility::_POST('name')"/etc... 也是空的。是否有可能不过滤掉这些参数的配置?
  • 添加了我的答案的链接
  • 您也可以将 \TYPO3\CMS\Core\Utility\GeneralUtility::_POST() 和 \TYPO3\CMS\Core\Utility\GeneralUtility::_GET() 添加到您的答案中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
  • 2020-10-05
  • 1970-01-01
  • 2019-12-19
相关资源
最近更新 更多