如何链接到当前的PHP文件

时间:2015-04-22 18:03:14

标签: php hyperlink

我正在编写一个PHP文件,但我不知道创建链接的最佳方式是什么,而链接在同一个文件中但具有不同的ID。我的意思是我有一个名为test.php的文件,它包含类似的内容:

if ($id == "") {
    echo "<a href='".$_SERVER['PHP_SELF']."?id=test'>Try the test page</a>";
} else if ($id == "test") {
    echo "Here is the testing content with various information!";
}

我想知道什么更适合更安全的代码: $_SERVER['PHP_SELF']?id=testtest.php?id=test

我知道它现在用于相同的目的,但是如果我更改文件名$_SERVER['PHP_SELF']?id=test似乎更好,因为它仍然指向同一个文件。

但我想知道哪个更安全。

1 个答案:

答案 0 :(得分:4)

你不应该打印$_SERVER['PHP_SELF'];这是一个安全漏洞(这里有一个例子:How To Identify The Requested Page In PHP)。

如果您尝试链接到同一页面,但使用查询参数(?)或主播(#),您可以直接链接到它们,正如@kingkero建议的那样。

<!--
  The code snippet runs as an iframe from http://stacksnippets.net/js, 
  so that's the root of the links you'll see if you click "Run".
-->
<a href="">Link to current page</a><br />
<a href="?id=test">Add query param to current page</a><br />
<a href="#anchor">Add anchor tag to current page</a>

不以/或协议(如http://)开头的链接相对于当前文档的位置。以/开头的链接与域根相关。行为由W3C布局。

从广义上讲,你是对的,你应该避免在文件中硬编码文件名这样的东西。但是,您通常也不需要使用$_SERVER中的数据来构建链接。