から正しいパスを取得するには、次のURLをご検討ください:PHPはURL
http://www.mydomain.com/a/test.php
https://www.mydomain.org/a/b/test.php
http://www.mydomain.co.nr/a/b/c/test.php
https://www.mydomain.com/a/b/c/d/test.php
http://www.mydomain.co.uk/a/b/c/d/e/test.php
https://www.mydomain.co.au.nm/a/b/c/d/e/f/test.php?var1=test1&var2=test2
は今、私はそれは、それぞれ以下の出力が含まれるようにtest.phpをファイルにACTUAL_URLと呼ばれる定数を宣言したい(これらのことを前提とします
:http://www.mydomain.com/
https://www.mydomain.org/a/
http://www.mydomain.co.nr/a/b/
https://www.mydomain.com/a/b/c/
http://www.mydomain.co.uk/a/b/c/d/
https://www.mydomain.co.au.nm/a/b/c/d/e/
今すぐ次の場所にあるファイル、1.phpを考慮してください。URLは上記の順)に、それぞれのウェブサイトのメインディレクトリを表します
1.phpのためのPHPコードは次のようになります。注意すべき
//1.php
//The folder name may remain as "a" or may change.
//But for most cases, it will be "a"
require_once('a/test.php');
//Rest of the code for the page
いくつかのこと:
- は、理想的にはtest.phpを独自に実行されることはありません。むしろ、メインディレクトリ内の他のファイルおよび/またはサブディレクトリ内の他のファイルにインクルードされるインクルードファイルです。
- このコードは、受信したURLからhttpとhttpsを検出し、それを使用するのに十分スマートであることに注意してください。
- .comドメインまたは.co.nmnmドメインであり、正しくフェッチできます。
- $ _GET経由で受け取ったパラメータを削除します。
私は、次を試してみましたが、満足のいく答えを得るために失敗しました:
define("ACTUAL_URL", basename($_SERVER['PHP_SELF']));
define("ACTUAL_URL", dirname($_SERVER['PHP_SELF']));
define("ACTUAL_URL", $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]);
最初の2がされていない、むしろ彼らは、フォルダの物理パスを提供するように見える、ウェブサイトのURLを提供いけません必須。私はアクセス可能なURLが必要です。 3番目のドメイン名はドメイン名+フォルダ(良い)ですが、現在実行中のページのファイル名とそれに関連する$ _GETパラメータが含まれています。 、私は一定のACTUAL_URLが私を与えたいと思う上記の場合
https://www.mydomain.co.au.nm/a/b/c/d/e/1.php?var1=test1&var2=test2
https://www.mydomain.co.au.nm/a/b/c/d/e/f/test.php
:たとえば、ウェブサイトでの私のファイルは、以下の構造を考慮し
https://www.mydomain.co.au.nm/a/b/c/d/e/
相対パスをtest.phpをします常に1.phpファイルに含まれています。
上記の機能をどのように達成できますか?
こんにちは、セキュリティ上の観点から、より良いソリューションを実装する方法を教えてください。ありがとう。 – Devner
@Denver:パスプレフィックスの 'require_once'呼び出しまたはハードコード定数に相対パスを使用します。 – Asaph
ありがとうございます。それは役に立ちます。 – Devner