PHP中提供了一個可以訪問當(dāng)前執(zhí)行腳本的文件名的超級全局變量$_SERVER,而$_SERVER['PHP_SELF']就是其中的一個屬性,它返回當(dāng)前執(zhí)行腳本的文件名。在很多情況下我們都需要使用到它,比如在HTML表單中使用,或者用來作為關(guān)于頁面的鏈接等。
我們來看一個示例,在一個名為index.php的頁面中,我們可以通過$_SERVER['PHP_SELF']來獲取當(dāng)前執(zhí)行腳本的文件名:
<?php echo $_SERVER['PHP_SELF']; ?>當(dāng)我們在瀏覽器中訪問index.php時,這段代碼輸出的結(jié)果將會是/index.php。注意到這個輸出包含了斜杠(/),這是由于PHP_SELF會返回當(dāng)前文件的相對路徑,而在這個例子中index.php位于網(wǎng)站的根目錄下,所以輸出的結(jié)果是以斜杠開頭的。 另一個例子,假設(shè)我們有一個搜索表單,它的action屬性值指向當(dāng)前頁面,這意味著提交表單時將會重新加載當(dāng)前頁面。為了避免重新加載頁面后表單數(shù)據(jù)被清空,我們可以在表單中使用$_SERVER['PHP_SELF']作為action屬性值。
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get"> <label>搜索:</label> <input type="text" name="search"> <input type="submit" value="提交"> </form>此時當(dāng)我們在頁面中輸入搜索詞并提交表單時,頁面將不會重新加載,而是將搜索詞作為查詢參數(shù)附加在當(dāng)前URL后面,并通過GET方式提交到同一頁面中。 還有一個使用$_SERVER['PHP_SELF']的常見場景是用它作為一個鏈接的href屬性值,這可以生成一個跳轉(zhuǎn)鏈接到當(dāng)前頁面的不同部分。
<a href="<?php echo $_SERVER['PHP_SELF']; ?>#section1">跳轉(zhuǎn)到第一部分</a>在這個例子中,當(dāng)我們點(diǎn)擊鏈接時,頁面將會滾動到頁面中id為section1的元素位置。 需要注意的是,雖然$_SERVER['PHP_SELF']可以返回當(dāng)前執(zhí)行腳本的文件名,但不一定總是可靠的。因為它是從瀏覽器中提交的數(shù)據(jù)中提取出來的,所以它可能會受到一些安全問題的影響,例如跨站腳本攻擊(XSS)。在使用它時應(yīng)該謹(jǐn)慎使用,并考慮到這些安全問題,以確保網(wǎng)站的安全性。