我正在编写一个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=test
或test.php?id=test
。
我知道它现在用于相同的目的,但是如果我更改文件名$_SERVER['PHP_SELF']?id=test
似乎更好,因为它仍然指向同一个文件。
但我想知道哪个更安全。
答案 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
中的数据来构建链接。