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 из одного блога сети в другой блог.

Кроме того, ваш код мне кажется нормальным, и вы также говорите, что он работает. Поэтому я не понимаю, где именно вам нужна помощь. Не могли бы вы уточнить свой вопрос?

Другие вопросы по тегам