WordPress nonce
Привет, я пытаюсь попасть в Wordpress Ajax Requests прямо сейчас. Теперь я закончил сценарий, который отлично работает. Но так как я не специалист по безопасности, я хотел бы спросить вас, можете ли вы мне помочь.
Я также хотел бы знать, должен ли я использовать форму каждый раз, или я могу начать запрос непосредственно через jQuery Ajax. Если да, то как мне это сделать с динамическими запросами, когда я не могу установить одноразовый номер раньше? например, в списке, где каждая запись имеет несколько кнопок?
Большое спасибо!
Шаблон-form.php
<form method="post" id="form">
<input type="text" name="form_name" />
<?php wp_nonce_field( 'form_action', 'form_nonce' ); ?>
<input type="submit" id="submit" value="save">
</form>
script.js
jQuery("#submit").click(function (e) {
e.preventDefault();
jQuery.post(ajaxurl + "/ajax.php", jQuery("#form").serialize()).done(function (data) {
alert(data);
});
return false;
});
ajax.php
<?php
define( 'WP_USE_THEMES', false );
require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );
if( isset( $_POST['form_nonce'] ) && wp_verify_nonce( $_POST['form_nonce'], 'form_action') ) {
$form_name = sanitize_text_field($_POST['form_name']);
echo "is working";
}else{
echo "not working";
wp_die();
}
?>
0 ответов
Я также хотел бы знать, нужно ли мне каждый раз использовать форму или я могу запускать запрос напрямую через jQuery Ajax. Если да, то как мне это сделать с динамическими запросами, когда я не могу установить одноразовый номер раньше? например, в списке, где каждая запись имеет несколько кнопок?
Нет, вы также можете использовать wp_nonce_url для вызовов ajax. Но, насколько мне известно, я не буду работать, если у вас мультисайтовая установка и вы отправляете вызов ajax из одного блога сети в другой блог.
Кроме того, ваш код мне кажется нормальным, и вы также говорите, что он работает. Поэтому я не понимаю, где именно вам нужна помощь. Не могли бы вы уточнить свой вопрос?