0

http または https に基づいて何かを行う必要があります。例えば:

$https = strpos($_SERVER['REQUEST_URI'], 'https') !== false;
if ($https) { ?>
    <script type="text/javascript">
    var a = 'a';
    </script>
<?php } else { ?>
    <script type="text/javascript">
    var b = 'b';
    </script>
<?php } ?>

しかし、これはうまくいきません。アクセスするページが http または https に関係なく、常に 2 番目のオプションに進みます。回避策はありますか?前もって感謝します。

4

4 に答える 4

1

@MichaelBertwoski のコメントに同意します。単に JavaScript に対してこれを実行しようとしている場合は、このように JavaScript で検出を行います。

if (window.location.protocol == 'https:') {
    var a = 'a';
} else {
    var b = 'b';
}

PHP の情報が必要な場合は、投稿された他の回答のいずれかを使用できます。

于 2012-11-28T01:16:30.767 に答える
1

if (isset($_SERVER['HTTPS']))代わりに使用してみてください。

于 2012-11-28T01:05:02.390 に答える
1

$_SERVER['REQUEST_URI']ドメインやプロトコルではなく、サーバールートからの相対パスのみを返します。その上、私が にアクセスすると、あなたのコードは失敗しますhttp://example.com/https-is-cool

代わりに、次を試してください。

$https = !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== "off";
于 2012-11-28T01:05:26.190 に答える
1
if(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443){
    echo 'https';
}else{
    echo 'http';
}

または変数として:

$https = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? true : false;
于 2012-11-28T01:05:38.180 に答える