basercms icon indicating copy to clipboard operation
basercms copied to clipboard

【システム】BcBaserヘルパー getLinkが現在SSLの場合フルパスになってしまう問題

Open katokaisya opened this issue 4 months ago • 0 comments

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) のに変える

katokaisya avatar Aug 15 '25 07:08 katokaisya