$_SERVER['PHP_SELF'] 和 $_SERVER['SCRIPT_NAME'] 在 PHP 中都用于获取当前执行脚本的路径,但它们之间有一些细微的差别,主要涉及到 URL 的格式和查询字符串(query string)的处理。
$_SERVER['PHP_SELF']$_SERVER['PHP_SELF'] 返回当前执行脚本的路径,包括文件名,并且如果 URL 中包含查询字符串(即 ? 后面的部分),它也会包含这个查询字符串。action 属性中,以确保表单数据被发送回当前脚本进行处理。$_SERVER['SCRIPT_NAME']$_SERVER['SCRIPT_NAME'] 也返回当前执行脚本的路径,包括文件名,但它不包括查询字符串。$_SERVER['PHP_SELF'] 更安全,特别是当你不希望将查询字符串传递给另一个脚本或页面时。假设你的 URL 是 http://example.com/script.php?action=edit:
$_SERVER['PHP_SELF'] 将返回 /script.php?action=edit$_SERVER['SCRIPT_NAME'] 将返回 /script.php当使用 $_SERVER['PHP_SELF'] 或类似变量来构建链接或重定向时,始终应该对其进行清理或转义,以防止 XSS 攻击。一个常见的做法是使用 htmlspecialchars() 函数来转义这些变量中的特殊字符。
例如:
php 这样,即使 URL 中包含恶意脚本,它们也会被转义,从而防止它们在页面上执行。