iT邦幫忙

0

php 有辦法知道路徑嗎?

我能用 $_SERVER['HTTP_HOST'] 知道目前的網址
也能用$_SERVER['PHP_SELF']知道現在在瀏覽哪個文件
例如我在 index.php
他就會顯示 /index.php
如果我在 admin/index.php
他就會顯示/admin/index.php
我想要實現的是

只要當路徑有 /admin/ 的時候,就執行某個 script
但,如何判斷現在是否正在 /admin/*.php 底下瀏覽?
要怎麼抓到 /admin/ 呢?不判斷是哪個 .php,只要判斷它前面的文件名稱

PS我有想過用 basename(__FILE__)系列,但我本端是一個位置,服務器端又是另一種位置,這樣我要多幾行判斷,不好用。_SERVER 最單純,直接略過root根目錄,但是它卻沒有只抓文件夾的功能....

2
weiclin
iT邦高手 4 級 ‧ 2018-07-22 15:26:08
最佳解答

這樣判斷:

if (0 === strpos($_SERVER['REQUEST_URI'], '/admin/')) {
    // 在 admin 底下
}
1
Homura
iT邦研究生 2 級 ‧ 2018-07-22 14:58:52

我不清楚你要做什麼
不過你在admin資料夾底下
放一個判斷的php檔
然後資料夾底下每個php檔案都include那個判斷php檔案不就好了...

0

「只要當路徑有 /admin/ 的時候,就執行某個 script」
其實你都已經這樣定義了,連判斷都不用,除非之後有更改的可能性,
也就是只在/admin/目錄下的php才include你要執行的script,
如果是php script

<?php include("script.php"); ?>

如果是js script

<script src="script.js"></script>
1
echochio
iT邦新手 2 級 ‧ 2018-07-24 13:41:15

如果您怕 include 出現 error .... "
那將字元切割 "/" 抓 array[1] 為 admin 且 array[0]與 array[3] 為 empty 就對了 還有 php 字元判斷 及 .php 字元判斷 ....還想到啥自己加 ....
以下亂搞 ... XD

<?php
$data = '/admin/test.php';
$a= explode("/",$data);
$b= explode(".",$data);
print $a[0];
if ((empty($a[3])) and (empty($a[0])) and (strcmp($a[1],"admin") == 0) and (strcmp(explode(".",$a[2])[1],"php") == 0) and (empty((explode(".php"
,$a[2])[1])))) {
print "OK";
}

我要發表回答

立即登入回答