加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

zend-framework – 如何防止Zend Framework 1解析一个带有点的控

发布时间:2020-12-13 22:49:26 所属栏目:PHP教程 来源:网络整理
导读:我有一个运行在Zend Framework 1.12上的网站.它有一个名为’users’的控制器.当我错误地输入其名称时 – http:// mywebsite / userss – 我理所当然地得到一个错误,说这样的控制器不存在.但是,当我在其名称的末尾添加一个点时: http:// mywebsite / users
我有一个运行在Zend Framework 1.12上的网站.它有一个名为’users’的控制器.当我错误地输入其名称时 – http:// mywebsite / userss – 我理所当然地得到一个错误,说这样的控制器不存在.但是,当我在其名称的末尾添加一个点时:
http:// mywebsite / users.,错误表示不存在名为users./index.phtml的viewscript.有趣的是,它仍然正确地获得控制器(用户).

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

>它如何以及为什么在最后忽略一个点,并且仍能正确获得控制器?
>有没有办法拒绝这样的控制器名称,而不对框架的核心进行任何修改?

解决方法

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

这个特别的作品来自Zend Framework 0.1.4(Historic Right ??):)

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

在这里你看 –,_和.在第一步中删除.

即使在今天,此功能设置为删除 – 和.但不是_

这是该function的当前Zend Framework 1.x版本

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()返回一个数组数组(‘ – ‘,’.’); [line]因此在URL中首先删除它们,它回答了你的第一个问题.关于第二个问题,你可以修改this行并删除.从中.

protected $_wordDelimiter = array('-','.');

在此之后,Despatcher将不再找到控制器或任何URI组件.在上面.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读