不!小心
不要指望
check_admin_referer()
没有正确的参数!因为在某些情况下
it may not die()
(与您的期望相反),它只会返回
false
回答
查看概述的行为source code 逻辑:
function check_admin_referer( $action = -1, $query_arg = \'_wpnonce\' ) {
$result = isset( $_REQUEST[ $query_arg ] ) ? wp_verify_nonce( $_REQUEST[ $query_arg ], $action ) : false;
//Now, "die() check"
if ( ! $result && ( -1 !== $action || strpos( wp_get_referer(), admin_url() ) !== 0 ) ) {
die();
}
return $result;
}
因此,您需要了解逻辑的作用。此处细分:
A) 如果你打电话check_admin_referrer()
无参数:
记住,它将使用自动内置的_wpnonce
值(这是安全的,但在提交时仍要记住该字段)如你所说,没有参数,它使用default -1
行动价值,引领die() check
to be skipped and function will not die()
因此,您应该始终使用(在没有参数的情况下调用):
if ( check_admin_referer() ) exit;
B) 如果你愿意
check_admin_referrer
要自动死亡,则应始终创建nonce&;使用参数调用它:
check_admin_referrer($action_name, $name_field );