gpt4 book ai didi

zend-framework - 如何防止 Zend Framework 1 解析末尾带有点的 Controller 名称?

转载 作者:行者123 更新时间:2023-12-04 04:33:34 25 4
gpt4 key购买 nike

我有一个在 Zend Framework 1.12 上运行的网站。它有一个名为“users”的 Controller 。当我输入错误名称时— http://mywebsite/userss — 我理所当然地得到一个错误,说这样的 Controller 不存在。但是,当我在其名称末尾添加一个点时:http://mywebsite/users. ,一个错误说一个名为 users./index.phtml 的 View 脚本不存在。有趣的是,它仍然正确地获取 Controller (用户)。

关于这个问题,我有两个问题:

  • 它如何以及为什么忽略最后的一个点,并且仍然正确地获得一个 Controller ?
  • 有没有办法拒绝这样的 Controller 名称,而无需对框架的核心进行任何修改?
  • 最佳答案

    很好的问题,但为了回答这个问题,我们挖掘了 Zend 框架的来源,最初回到 2007 年,一个函数 _formatName()专门用于从 URL 名称中删除此类异常。可能比这更早,但我不知道。

    这个特别的部分来自 Zend Framework 0.1.4(历史正确??):)

    protected function _formatName($unformatted)
    {
    $unformatted = str_replace(array('-', '_', '.'), ' ', strtolower($unformatted));
    $unformatted = preg_replace('[^a-z0-9 ]', '', $unformatted);
    return str_replace(' ', '', ucwords($unformatted));
    }

    在这里你看到 - , _ , 和 .在第一步删除。

    即使在今天,这个功能也被设置为删除 -.但不是 _
    这是当前的 Zend Framework 1.x 版本 function
    protected function _formatName($unformatted, $isAction = false)
    {
    // preserve directories
    if (!$isAction) {
    $segments = explode($this->getPathDelimiter(), $unformatted);
    } else {
    $segments = (array) $unformatted;
    }

    foreach ($segments as $key => $segment) {
    $segment = str_replace($this->getWordDelimiter(), ' ', strtolower($segment));
    $segment = preg_replace('/[^a-z0-9 ]/', '', $segment);
    $segments[$key] = str_replace(' ', '', ucwords($segment));
    }

    return implode('_', $segments);
    }

    就像在此 line 中清除 URI 段之前一样
    $segment = str_replace($this->getWordDelimiter(), ' ', strtolower($segment));

    函数 getWordDelimeter()返回 array('-', '.'); 的数组 [line]因此删除它们在 URL 中的第一件事,即 回答您的第一个问题 .关于第二个问题,可以修改 this行并删除 .从中。
    protected $_wordDelimiter = array('-', '.');

    在此之后,调度程序将不再找到 Controller 或任何带有 . 的 URI 组件。在上面。

    关于zend-framework - 如何防止 Zend Framework 1 解析末尾带有点的 Controller 名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17749566/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com