basercms
basercms copied to clipboard
【システム】BcBaserヘルパー getLinkが現在SSLの場合フルパスになってしまう問題
BcBaserヘルパー getLinkをSSL環境で使用すると、強制的にフルパスになってしまいます。
可能であれば、引数のSSLをfalseにした場合、フルパスにならないようにしてほしいです。
該当コード
$options = array_merge([
'escape' => true,
'prefix' => false,
'forceTitle' => false,
'ssl' => $this->isSSL(),
'enabled' => true
], $options);
$ssl = $options['ssl'];
// 現在SSLの場合、特定の条件でフルパスとする
// - //(スラッシュスラッシュ)から始まるURL
// - http / https 以外のプロトコル
// - ハッシュタグから始まるURL
$full = false;
if (BcUtil::isInstalled()
&& ($this->isSSL() || $ssl) ⇐⇐⇐⇐⇐⇐この判定
&& !(preg_match('/^(javascript|https?|ftp|tel|mailto):/', $srcUrl))
&& !(strpos($srcUrl, '//') === 0)
&& !preg_match('/^#/', $srcUrl)) {
$full = true;
}
この場合、($this->isSSL() || $ssl) の判定があるため、SSL環境では強制的に true となり、
/~ というルートパスは、条件で弾かれないためフルパスとして出力されてしまい、
組込側で引数で調整するといった対応ができなくなります。
baserCMS version : 5.1.9
TODO
- [ ]
($this->isSSL() || $ssl)の判定を($this->isSSL() && $ssl)のに変える