TL; DR
Nói tóm lại, wp_verify_nonce()
sử dụng giá trị đó bởi vì nó mong đợi giá trị đó là đối số đầu tiên của nó.
wp_verify_nonce()
tranh luận
wp_verify_nonce()
nhận được 2 đối số:
$nonce
$action
Giá trị trong trường ẩn ( 'cabfd9e42d'
trong ví dụ của bạn) đại diện cho $nonce
.
Đối số thứ nhất là nonce và xuất phát từ yêu cầu
Trong thực tế, wp_verify_nonce()
phải được sử dụng như vậy:
// here I assume that the form is submitted using 'post' as method
$verify = wp_verify_nonce($_POST['message-send']);
Vì vậy, đối số đầu tiên được chuyển đến wp_verify_nonce()
chính xác là giá trị hiện diện trong trường ẩn.
Đối số 2: wp_create_nonce()
phương thức
Về đối số thứ hai, nó phụ thuộc vào cách bạn xây dựng giá trị nonce.
Ví dụ: nếu bạn đã làm:
<?php $nonce = wp_create_nonce( 'custom-action' ); ?>
<input type="hidden" name="message-send" value="<?php echo $nonce ?>" />
Sau đó, bạn cần phải làm:
$verify = wp_verify_nonce( $_POST['message-send'], 'custom-action' );
Vì vậy, đối số thứ hai là đối số được sử dụng làm đối số wp_create_nonce()
.
Đối số 2: wp_nonce_field()
phương thức
Nếu bạn đã tạo nonce bằng cách sử dụng wp_nonce_field()
như:
wp_nonce_field( 'another_action', 'message-send' );
Sau đó, bạn cần xác minh nonce như vậy:
$verify = wp_verify_nonce( $_POST['message-send'], 'another_action' );
Vì vậy, lần này, hành động là bất cứ điều gì được thông qua như là đối số đầu tiên wp_nonce_field()
.
Tóm tắt
Để vượt qua wp_verify_nonce()
xác thực, bạn cần truyền 2 đối số cho hàm, một là giá trị trong trường ẩn nonce, hai là hành động và phụ thuộc vào cách xây dựng giá trị nonce.
$nonce
giá trị ở đó - séc trả về sai nếu$nonce
thiếu giá trị.