String 防止CakePHP从作为参数传递的url中剥离字符?

String 防止CakePHP从作为参数传递的url中剥离字符?,string,url,cakephp,substr,cakephp-2.x,String,Url,Cakephp,Substr,Cakephp 2.x,我正在使用CakePHP 2.6开发一个应用程序,在将包含url字符的字符串作为参数传递给控制器方法时遇到问题 在我看来,我有一段代码,它呼应出一系列包含数据的表行,并传递页面id、单元id和链接id(有时可能包含url) <?php foreach($linklist as $l) { ?> <tr id="Link_<?php echo $l['ID']; ?>"> <td><?php echo $l['Title

我正在使用CakePHP 2.6开发一个应用程序,在将包含url字符的字符串作为参数传递给控制器方法时遇到问题

在我看来,我有一段代码,它呼应出一系列包含数据的表行,并传递页面id、单元id和链接id(有时可能包含url)

<?php foreach($linklist as $l) { ?>
    <tr id="Link_<?php echo $l['ID']; ?>">
        <td><?php echo $l['Title']; ?></td>
        <td class="buttontd"><?php echo $this->Form->postlink('Delete', array('action' => 'deletelink', $this->request->params['pass'][0], $results[0]['PageUnitTypeID'], $l['ID']), array('class' => 'button delete')); ?></td>
    </tr>
<?php } ?>
这表明url已作为字符串传递,但在操作中,当我尝试仅使用
var_dump()
第三个参数时,它返回一个
www.google.co.uk
字符串,并且没有任何其他内容阻止我执行
substr()
调用参数检查前3个字符是否等于
url

我曾尝试将postlink调用中的参数包装在
serialize()
urlencode()
中,但这两种方法都没有达到返回完整字符串的预期效果

urlhttp%3A%2F%2Fwww.google.co.uk%2F
有没有人知道一种成功的方法可以在不丢失重要字符的情况下通过这样的参数

更新1:Deletelink操作

public function deletelink($pid = null, $uid = null, $lid = null) {
    $this->autoRender = false;

    if (!is_null($pid) && is_numeric($pid) && !is_null($uid) && is_numeric($uid)) {

        if (!is_null($lid)) {

            if (substr($lid, 0, 3) == 'url') {
                echo substr($lid, 0, 3);
            } else {
                echo substr($lid, 0, 3);
            }

        } else {
            $this->Session->setFlash('It is unknown which link you wish to delete from the webpage', 'flash_message_bar', array('class' => 'error'));
            return $this->redirect(array('action' => 'edit', $pid));
        }

    } else {
        $this->Session->setFlash('It is unknown which on which webpage you wish to delete a link', 'flash_message_bar', array('class' => 'error'));
        return $this->redirect(array('action' => 'index'));
    }
}
CakePHP(或者我会说是mod_rewrite)正在与URL的形成方式相混淆

最安全的选择是对视图中的
url
参数进行
base64\u编码,这将导致调用类似于:

http://mydomainname.com/webpages/deletelink/239/7/dXJsaHR0cDovL3d3dy5nb29nbGUuY28udWsv
然后在稍后的操作中对其进行
base64\u解码,这将转换

dXJsaHR0cDovL3d3dy5nb29nbGUuY28udWsv
进入


是否要将3个参数传递给
deletelink
操作?你的删除操作看起来怎么样?@skywalker是的,我想将所有3个参数传递给
deletelink
操作。其概念是使用第三个参数进行操作,然后使用前两个参数重定向回另一个操作。我已经更新了我的原始帖子,添加了
deletelink
控制器代码。你尝试了吗?@skywalker刚刚尝试了
base64
编码和解码。它允许我在另一端获得价值,这是最重要的事情,尽管我认为我仍将在未来寻找更好的解决方案。谢谢
dXJsaHR0cDovL3d3dy5nb29nbGUuY28udWsv
urlhttp://www.google.co.uk/