如何使用CakePHP的HtmlHelper创建安全链接(https)

时间:2013-12-30 01:18:37

标签: cakephp ssl hyperlink cakephp-2.4

我到处寻找,无法找到如何使用CakePHP的HtmlHelper创建安全链接(https)。

似乎这应该是一个简单的选择,但......显然它不是。

1 个答案:

答案 0 :(得分:2)

结束只是扩展HtmlHelper并允许用户(我)传递'_secure'=>true作为选项(见下文)。

当然,这可以延长,清理等等,但是 - 它对我的目的很有用。

自定义“MyHtmlHelper”:

<?php
//app/View/Helper/MyHtmlHelper.php
App::uses('HtmlHelper', 'View/Helper');
class MyHtmlHelper extends HtmlHelper {

    public function link($title, $url = null, $options = array(), $confirmMessage = false) {
        if(!empty($url['_secure']) && $url['_secure'] === true) {
            unset($url['_secure']);
            $url = str_replace('http:', 'https:', parent::url($url));
        }
        return parent::link($title, $url, $options, $confirmMessage);
    }

}

<强>解释

基本思想是检查你是否在选项数组中作为选项传递'secure'。如果这样做,它会强制链接为'full_base'(即带有http://的完整URL ...),然后将URL构建为字符串并将'http:'替换为'https:'

使用方法:

echo $this->Html->link('SSL LINK!', array(
    'controller' => 'orders',
    'action'     => 'tickets',
    'full_base'  => true,
    'secure'     => true
));

<强>提醒:

你必须告诉你的应用你想要使用你的助手作为HtmlHelper:

public $helpers = array(
    'Html' => array('className' => 'MyHtml'),
);