wp_get_raw_referer()
云策文档标注
概述
wp_get_raw_referer() 函数用于从 '_wp_http_referer' URL 查询变量或 HTTP referer 中检索未经验证的引用来源。它返回字符串或 false,不应用于重定向场景。
关键要点
- 函数优先检查 $_REQUEST['_wp_http_referer'],如果存在且为字符串,则返回去除反斜杠的值。
- 如果 '_wp_http_referer' 无效,则回退到 $_SERVER['HTTP_REFERER'] 作为引用来源。
- 返回类型为字符串(成功时)或 false(失败时),不进行验证,因此不适用于重定向,应使用 wp_get_referer() 替代。
- 函数自 WordPress 4.5.0 版本引入,相关函数包括 wp_unslash() 和 wp_get_referer()。
代码示例
function wp_get_raw_referer() {
if ( ! empty( $_REQUEST['_wp_http_referer'] ) && is_string( $_REQUEST['_wp_http_referer'] ) ) {
return wp_unslash( $_REQUEST['_wp_http_referer'] );
} elseif ( ! empty( $_SERVER['HTTP_REFERER'] ) ) {
return wp_unslash( $_SERVER['HTTP_REFERER'] );
}
return false;
}注意事项
此函数检索的引用来源未经验证,可能不可靠,开发者应避免在安全敏感操作(如重定向)中使用,推荐使用 wp_get_referer() 进行验证。
原文内容
Retrieves unvalidated referer from the ‘_wp_http_referer’ URL query variable or the HTTP referer.
Description
If the value of the ‘_wp_http_referer’ URL query variable is not a string then it will be ignored.
Do not use for redirects, use wp_get_referer() instead.
Source
function wp_get_raw_referer() {
if ( ! empty( $_REQUEST['_wp_http_referer'] ) && is_string( $_REQUEST['_wp_http_referer'] ) ) {
return wp_unslash( $_REQUEST['_wp_http_referer'] );
} elseif ( ! empty( $_SERVER['HTTP_REFERER'] ) ) {
return wp_unslash( $_SERVER['HTTP_REFERER'] );
}
return false;
}
Changelog
| Version | Description |
|---|---|
| 4.5.0 | Introduced. |