完全な URL を取得するには、次のコードを使用します。
$actual_link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
問題は、 でいくつかのマスクを使用しているため.htaccess
、URL に表示されるものが必ずしもファイルの実際のパスではないことです。
必要なのは、URL と、URL に書かれている内容、それ以上でもそれ以下でもない完全な URL を取得することです。
サーバー上のファイルの実際のパスではなく、Web ブラウザーのナビゲーション バーにどのように表示されるかを取得する必要があります。
ベストアンサー1
を見てください$_SERVER['REQUEST_URI']
。
$actual_link = "https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
(二重引用符で囲まれた文字列構文は完全に正しい。
HTTPとHTTPSの両方をサポートしたい場合は、
$actual_link = (empty($_SERVER['HTTPS']) ? 'http' : 'https') . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
⚠️ このコードは、クライアントとサーバーが任意の値に設定できるため、セキュリティに影響を及ぼします。両方の値をサニタイズし、適切な処理を行うことが絶対に必要です。
HTTP_HOST
REQUEST_URI
入力検証(CWE-20)。いかなるセキュリティコンテキストでも使用してはなりません。