TL; DR
กล่าวโดยย่อให้wp_verify_nonce()
ใช้ค่านั้นเนื่องจากคาดว่าค่านั้นจะเป็นอาร์กิวเมนต์แรก
wp_verify_nonce()
ข้อโต้แย้ง
wp_verify_nonce()
ได้รับ 2 ข้อโต้แย้ง:
$nonce
$action
ค่าในช่องที่ซ่อนอยู่ ( 'cabfd9e42d'
ในตัวอย่างของคุณ) $nonce
เป็นตัวแทนของ
อาร์กิวเมนต์ที่ 1 คือ nonce และมาจากคำขอ
ในความเป็นจริงwp_verify_nonce()
จะต้องมีการใช้เช่น:
// here I assume that the form is submitted using 'post' as method
$verify = wp_verify_nonce($_POST['message-send']);
ดังนั้นอาร์กิวเมนต์แรกที่ส่งไปwp_verify_nonce()
ยังค่าที่มีอยู่ในเขตข้อมูลที่ซ่อนอยู่
อาร์กิวเมนต์ที่ 2: wp_create_nonce()
เมธอด
เกี่ยวกับอาร์กิวเมนต์ที่สองนั้นขึ้นอยู่กับวิธีที่คุณสร้างค่า nonce
เช่นถ้าคุณทำ:
<?php $nonce = wp_create_nonce( 'custom-action' ); ?>
<input type="hidden" name="message-send" value="<?php echo $nonce ?>" />
จากนั้นคุณต้องทำ:
$verify = wp_verify_nonce( $_POST['message-send'], 'custom-action' );
wp_create_nonce()
ดังนั้นอาร์กิวเมนต์ที่สองคือสิ่งที่ถูกนำมาใช้เป็นอาร์กิวเมนต์
อาร์กิวเมนต์ที่ 2: wp_nonce_field()
เมธอด
หากคุณสร้าง nonce โดยใช้wp_nonce_field()
like:
wp_nonce_field( 'another_action', 'message-send' );
จากนั้นคุณต้องตรวจสอบ nonce ดังนี้:
$verify = wp_verify_nonce( $_POST['message-send'], 'another_action' );
wp_nonce_field()
ดังนั้นเวลานี้การกระทำที่ถูกส่งผ่านสิ่งที่เป็นอาร์กิวเมนต์แรก
ปะยางรถ
ในการผ่านwp_verify_nonce()
การตรวจสอบคุณจะต้องผ่าน 2 อาร์กิวเมนต์ไปยังฟังก์ชันหนึ่งคือค่าในเขตข้อมูลที่ไม่ถูกซ่อนส่วนอีกค่าคือการดำเนินการและขึ้นอยู่กับวิธีสร้างค่า nonce
$nonce
คุ้มค่าเช่นกัน - เช็คคืนเป็นเท็จหากไม่มี$nonce
ค่า