PHP-FAQ-PHP_SELF和SCRIPT_NAME
创始人
2024-11-04 09:38:10

1 需求


2 接口


3 示例

$_SERVER['PHP_SELF'] 和 $_SERVER['SCRIPT_NAME'] 在 PHP 中都用于获取当前执行脚本的路径,但它们之间有一些细微的差别,主要涉及到 URL 的格式和查询字符串(query string)的处理。

$_SERVER['PHP_SELF']

  • $_SERVER['PHP_SELF'] 返回当前执行脚本的路径,包括文件名,并且如果 URL 中包含查询字符串(即 ? 后面的部分),它也会包含这个查询字符串
  • 它通常用于表单的 action 属性中,以确保表单数据被发送回当前脚本进行处理。
  • 但是,由于它包含查询字符串,如果直接将其用于链接或重定向而不进行适当处理,可能会导致安全问题,如跨站脚本攻击(XSS)。

$_SERVER['SCRIPT_NAME']

  • $_SERVER['SCRIPT_NAME'] 也返回当前执行脚本的路径,包括文件名,但它不包括查询字符串
  • 它提供了脚本的“基础”URL,不包含任何通过 GET 方法传递的参数。
  • 由于它不包含查询字符串,因此在大多数情况下,它比 $_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
" method="post">

这样,即使 URL 中包含恶意脚本,它们也会被转义,从而防止它们在页面上执行。


4 参考资料

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...